let
's get it started!Marek Stępień
Poglądy wyrażone w prezentacji są wyłącznie moje – w szczególności nie przedstawiają opinii mojego pracodawcy.
JSON.parse(str)
, JSON.stringify(obj)
Object.create()
, defineProperty()
, seal()
, freeze()
itd.Function.prototype.bind()
- funkcje dowiązanereduce
, map
, filter
itd.)Ponieważ mówimy o rzeczach, które dopiero są rozpatrywane przez komitet TC-39, wszystko, co dziś przedstawiam, szanse zostać wywrócone do góry nogami w ostatecznej wersji ES6! :-)
let
const answerToEverything = 42;
[a, b] = [5, 10];
[1,2,3].map((x) -> x*x)
Proxy
i metaprogramowanieWeakMap
function f(someArg = 5) {}
let
(JS1.7, Fx2)const answerToEverything = 42;
(JS 1.5, nawet Netscape 6)[a, b] = [5, 10];
(JS 1.8, Fx3)[1,2,3].map(function(x) x*x)
(JS 1.8, Fx3)Proxy
i metaprogramowanie (JS2, Fx4)yield x
(JS 1.7, Fx2)WeakMap
(Fx6)~ = duże prawdopodobieństwo różnic z docelową wersją ES6
Jako że Harmony opiera się w dużej mierze na nowej składni, kod musi być specjalnie oznaczony, żeby można było z niej korzystać. W Firefoksie obecnie wystarczy:
<script type="application/javascript;version=1.8"> let x = 5; </script>
NIE JEST to zgodne obecnie z żadnym standardem.
Rzeczy z ES6 opierające się na starej składni (Proxy i WeakMap) powinny działać bez tego type
.
Co wypisze c0nsole.write
? Dlaczego?
Nie wyrywajcie się do odpowiedzi - dajcie chwilę pomyśleć pozostałym! :)
var zmienna
- tworzy zmienną widoczną w bieżącej funkcji
var
(tzw. „hoisting”)
Kod z poprzedniego przykładu jest interpretowany tak, jak poniższy:
window
s)
var
= dostęp do globalnej zmiennej o tej nazwie
var
throw
ZŁO! Nie używać NIGDY!
let
the sunshine in :)let
let
(ang. let-definition)
let
(ang. let-statement)
let
(ang. let-expression)
let
var
:let zmienna;
let zmienna = wyrażenie;
let zm1 = wyr1, zm2 = wyr2, …, zmN = wyrN
let
let (inicjalizacje_zmiennych) { blok_kodu }
let
let (inicjalizacje_zmiennych) wyrażenie
let
let
?const
- definicje stałychES6: zasięg blokowy (jak let), obecnie w Fx: funkcyjny (jak var). Bug 611388
Pytania?
Silnik slajdów: CSSS (autorka: Lea Verou) + marcoos' CSSS-Plugins (MIT License)
Tło: bez tytułu, John Wilson (Flickr: johnwilson1969; CC-BY-SA)
Przykład z hoistingiem zmiennych pożyczony z adequatelygood.com.
Trik na zasięg blokowy dzięki throw
- pomysł z danbeam.org.