Abr@X@bra.ru
Курс по ES6 #3. Использования const

Курс по ES6 #3. Использования const

19.04.2017
86
Помимо var и let, для объявления переменных, мы можем использовать ключевое слово const. Которое было добавлено в ES6. 

Const – означает константа или постоянная. И позволяет объявлять постоянные значения, которые нельзя изменить в коде программы. 

Применения const

Давайте попробуем применить const. Но первое, что я сделаю, запущу скрипт Babel, который будет следить за файлами и при изменение создавать свежие версии файлов.

Для этого я открою терминал, ввожу команду:

npm run watch 

На сгенерированный файл мы просто посмотрим. Так как последние версии браузеров, поддерживают const без транспиляции. 
В папке src, я создам файл - const.js. В этом файле я создам постоянную PI использую const и присвою значение. 



Во многих языках включая JavaScript, по традиции названия постоянных пишется большими буквами, чтобы легко отличить их от переменных. 

Дальше я выведу значение PI, в консоле браузера. 



Важно не забыть указать файл в скрипте. 



Откроем браузер, в консоле мы видим значение PI. 



Теперь давайте посмотрим на то, что сгенерировал Babel. 



Как вы видите, Babel просто заменил const на var. 

Важно заметить, что если бы мы использовали транспилированный файл, то никаких ошибок по поводу использованию const мы бы не увидели.

Ошибки

Говоря об ошибках, постоянная может быть объявлена только один раз и значение должно быть присвоено сразу. В противном случае произойдет ошибка. 

Давайте посмотрим. Значение у PI я уберу. 



Обновим страницу в браузере и увидим ошибку.



Которая нам подсказывает, что у постоянной не присвоено значение. 

Также давайте попробуем изменить значение постоянной.



Перейдем опять в браузер и видим также ошибку. 



Данная ошибка на говорит о следующем, что мы не можем присвоить переменной другое значение. 

Постоянные также как и переменные объявленные через let, не поднимаются. То есть, я не могу использовать постоянную до ее объявления. 

Давайте разберем на примере.



Мы так же получаем ошибку.  



PI, не объявлена.

Еще одной интересной особенностью постоянных является тот факт, что хотя мы не можем поменять их значения, мы можем изменить значение свойств объекта, если оно было объявлено с помощью const.   

В этом нет ничего странного, так как если переменным присвоить в качестве значения объект, то в переменной будет находится ссылка на него, а не сам объект. 

Давайте посмотрим на примере. Для этого я объявлю постоянную MATH и в качестве значения присвою объект. В этом объекте будет одно свойство PI со значением 3.14159. 



Дальше я выведу в консоль браузера значение MATH.PI.



Откроем консоль в браузере.  



И мы увидим значение. 

Теперь я изменю значение PI. 



Перейдем в консоль браузера. 



И мы увидим новое значение. 

Нам это удалось потому, что мы изменили свойство объекта, а не значение самой постоянной. 

Если я попробую изменить само значение MATH на новый объект, в котором есть тоже свойство PI со своим значением. 



То в данном случае произойдет ошибка. 



На самом деле хорошо, что мне не удалось изменить значение PI. Иначе неизвестно, что произошло бы с нашим миром.  

Что использовать const, let или var?

Если вы точно уверены, что значение переменной не изменится, тогда используйте const. В остальных случаях используйте let. 

Также есть мнения, что по умолчанию нужно использовать const. И только для тех значений которые возможно изменится let. 

Ну, а как же var? К сожалению при написании кода на ES6, нет необходимости использовать var. Вот такой var у тебя печальный конец. 

В следующих постах на данную тему, познакомлю вас с оператором распространения или как еще его называют, оператор разворота. Который упростит передачу аргументов в функцию, а также работу с массивами. 


ES6, const
Читайте также:
Курс по React JS #5. React JS. Компоненты

Курс по React JS #5. React JS. Компоненты

Главной идеей React, является создание компонентов. React компоненты можно себе представить, как компонент пользовательс...
Читать
Битрикс и D7. Что за зверь такой

Битрикс и D7. Что за зверь такой

В этом посте хочу рассказать, что такое D7. Кто-то спросит D7? А что-такое D7? А это вообще Битрикс? А кто-то уже об это...
Читать
Курс по ES6 #0. Пилотный выпуск. Вступление

Курс по ES6 #0. Пилотный выпуск. Вступление

ECMAScript 2015 или ES6 летом 2015 был принят как официальный стандарт, и является самым крупным обновлением языка за по...
Читать
Источник: codedojo