Пишу про разработку вообще и в частности про: JavaScript, HTML5, CSS3, AngularJS, ReactJS, Agile.

Что будет в следующей версии JavaScript? – ECMAScript 6

JavaScript – это один из самых динамично развивающихся языков программирования. Предыдущая спецификация языка вышла в 2009 году и на сегодняшний день очевидно назрела необходимость для перевода JavaScript на следующий уровень. Причин тому вагон и маленькая тележка – JS уже давно вышел за пределы браузеров на стационарных компьютерах и используется в огромном количестве направлений: это и серверный язык (Node.js), это и язык для работы с железом (tessel.io), движок для разработки игр (scirra.com) я уже не говорю о применении JS в мобильном интернете и современных браузерах.

Так вот на июнь 2015 года запланирован выход следующей версии языка. Это достаточно серьезное событие, потому что в описании есть очень много нововведений выводящих язык на совершенно другой уровень. О некоторых из них я и хочу рассказать в этом посте.

Классы

В JS появятся классы! Пожалуй, одно из самых ожидаемых нововведений. На отсутствие классов в JS жаловались уже давно и то решение, которое да было предложено в языке многих не устраивало. Теперь же ситуация в корне изменится и это хорошо :]

Оператор =>

В новой версии языка вводится новый оператора =>, который будет использоваться при вызове функции. Это сокращенный вариант вызова безымянной функции, помимо этого он позволяет перетягивать родительский контекст в тело новой функции. Другими словами оператор this внутри новой функции будет относиться к родителю.

Как сейчас мы пишем код:

Как этот же код может быть переписан при помощи нового оператора =>

Блоковое определение переменных

В ECMAScript 6 вводится новая команда для определения переменной. Если до этого мы пользовались командой var, то теперь у нас есть let. Для сравнения давайте посмотрим на два примера.

Код, с командой var:

Это одна из классических проблем в работе с JS. Этот код не будет работать так, как программист может ожидать. Функции, которые будет вызваны в runCallbacks() все будут использовать последнее значение, которое переменные v, p получили. Это связанно с тем, что несмотря на то, что мы объявляем их внутри цикла, JS все равно перенесет их наружу.

Теперь давайте посмотрим, как этот же код можно переписать с использованием команды let:

Теперь этот код начнет работать так, как мы и ожидаем, потому что при каждом вызове цикла будет созданы новые переменные v, p

Ссылки по теме:
https://speakerdeck.com/rauschma/ecmascript-6-whats-next-for-javascript-august-2014
http://www.wintellect.com/blogs/nstieglitz/5-great-features-in-es6-harmony
https://github.com/lukehoban/es6features

Поделиться:
comments powered by Disqus