Ответы на вопросы на должность Frontend разработчика.
Переменные, объявленные при помощи ключевого слова var
, относятся к области видимости функции, в которой они созданы. Или, если они созданы вне какой-либо функции, — к глобальному объекту. let
и const
относятся к блочной области видимости — это означает, что они доступны только в пределах ближайшего набора фигурных скобок (функция, блок if-else или цикл for).
if (true) {
var bar = 'bar';
let baz = 'baz';
const qux = 'qux';
}
console.log(var); // bar
console.log(baz); // ReferenceError: baz is not defined
console.log(qux); // ReferenceError: qux is not defined
var
позволяет поднимать переменные и на них можно ссылаться в коде до их объявления. let
const
не позволяют этого и выдают ошибку.
Переопределение переменной с помощью var
не вызовет ошибку, в отличие от let
и const
.
let
отличается от const
тем, что изменять значение const
нельзя.