
В этом уроке мы разберем const и зачем он нам нужен. В ес5 у нас был только var. Если мы хотели сказать, что мы описываем константу мы обычно писали
var API_URL = 'http://google.com';
Когда мы писали все буквы большими, то это означало, что мы обьявили константу. Конечно это была не константа, а просто код стайл. Ей вполне мог кто-то переопределить ниже
var API_URL = 'http://google.com';
API_URL = 'http://youtube.com';
и никакой ошибки это не выкидывало.
В es6 ввели реализацию констант. Теперь мы можем их обьявить записью
const API_URL = 'http://google.com';
и если мы попробуем переопределить константу, описанную ранее, то получим ошибку, что переменная доступна только для чтения.
const API_URL = 'http://google.com';
API_URL = 'http://youtube.com';
Это отлично защищает нас от случайного переопределения констант. В остальном же обьявление const полностью повторяет поведение let. Его обьявление также является блочным, то есть описывается и доступно только внутри скобок. Например
if (true) {
const API_URL = 'http://google.com';
}
console.log(API_URL);
Мы получим ошибку, что API_URL не определен.
Если же в константу присвоить обьект, то он будет защищен от переопределения, а его свойста нет
const URLS = {
google: 'http://google.com'
}
URLS.google = 'http://youtube.com'
такая запись ошибки не выдаст, но если мы попробуем переприсвоить сам URL, то у нас ничего не получится. Точно такое же поведение будет и с массивом.
Обычно есть два вида код стайла.
Первый вариант: люди пишут в всем приложении let для переменных, а для настоящих констант используют const. Например
const API_URL = 'http://google.com';
const ORANGE = '#ffa500';
const PORT = '3000';
Второй вариант: люди пишут const для абсолютно всех переменных, а только в переменных, которые приходится переопределять пишут let. Конечно тогда константы не пишутся с большой буквы.
Я предпочитаю второй вариант, так как он лучше проверяется транспилятором и меньше вероятность что-то переопределить.
В этом уроке мы разобрали что такое const в es6 и чем он лучше var.
Если у вас возникли какие-то вопросы или комментарии, пишите их прямо под этим видео.