Zasięg blokowy w ES6

let's get it started!

Marek Stępień

I kto to mówi?

ECMAScript 5

Uwaga!

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! :-)

ECMAScript 6 „Harmony”

Co z ES6 jest już w Firefoksie?

~ = duże prawdopodobieństwo różnic z docelową wersją ES6

Opt-in dla nowej składni ES6 w Fx

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.

Zasięg w JS (ES3) - przypomnienie

Co wypisze c0nsole.write? Dlaczego?
Nie wyrywajcie się do odpowiedzi - dajcie chwilę pomyśleć pozostałym! :)

Zasięg w JS (ES3) - przypomnienie

Zasięg w JS (ES3) - przypomnienie

Zasięg w JS (ES3) - przypomnienie

Problem z var

Stare rozwiązanie: domknięcie

ES5: funkcja dowiązana

ES3: wariacki trik z throw

ZŁO! Nie używać NIGDY!

ES6: let the sunshine in :)

Trzy formy let

Definicja let

Polecenie let

Wyrażenie let

Wyrażenie let

Gdzie można wypróbować let?

const - definicje stałych

ES6: zasięg blokowy (jak let), obecnie w Fx: funkcyjny (jak var). Bug 611388

Dziękuję za uwagę!

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.