VAR, LET, CONST. ЧАСТЬ 1
Ссылка на статью в телеграм: https://t.me/froggyxyz_dev/11 Ссылка на статью в вк: https://vk.com/@froggyxyz_dev-var-let-const-chast-1
В JavaScript есть несколько способов инициализировать переменную. Самый старый из них - var, и те, что появились чуть позже - let и const.
Разберемся в чем их отличие, как было до появления let и const, и в каких случаях использовать каждую из них.
В первой части мы затронем такое понятие, как область видимости.
Область видимости в JavaScript для многих разработчиков вызывает некоторую сложность, особенно для тех, кто работал ранее с другими языками.
Дело в том, что в JavaScript изначально локальную область видимости может создать ТОЛЬКО функция. Ни о какой блочной области видимости, как, например, в Си, речи и не шло. Если мы инициализируем переменную value в блоке if, то мы сможем до нее достучаться и снаружи блока, в последующих строчках кода. if не создает свою область видимости, как многие этого ожидали бы
if (true) { var value = 1; } console.log(value); // Выведет 1
В рамках данной части - это является главной особенностью инициализации переменной с помощью var. Но как обстоят дела с let?
let, также как и const, появились только в ES6 (2015), как альтернативные способы для инициализации переменных.
Если мы попробуем переписать код выше и инициализировать переменную уже с помощью let, то в консоли мы увидим ошибку о том, что такой переменной не существует
if (true) { let value = 1; console.log(value); // Выведет 1 } console.log(value); // Выдаст ReferenceError
Это происходит из-за того, что let, как раз имеет уже блочную область видимости. Сама переменная, после инициализации, существует только в рамках того блока, в котором она объявлена (и в блоках глубже, но не выше). Такая реализация уже больше походит на то, что сделано и в других языках, а также дает больше гибкости во время разработки.
А что же с const? const, в данном случае, работает абсолютно также, как и let, за исключением неких других особенностей, о которых мы поговорим в дальнейшем.
if (true) { const value = 1; console.log(value); // Выведет 1 } console.log(value); // Выдаст ReferenceError