JavaScript
variables diff
let и const ведут себя одинаково по отношению к лексическому окружению, области видимости. Используют блочную область видимости.
Тело конструкций if, for, while и тд. для let и const организуют блочную область видимости.
if (true) {
let test = true; // используем let
}
console.log(test); // Error: test is not defined
Для «var» не существует блочной области видимости. Используют область видимости функции или глобальную.
if (true) {
var test = true; // используем var вместо let
}
console.log(test); // true, переменная существует вне блока if
Так как var игнорирует блоки, мы получили глобальную переменную test.
function sayHi() {
if (true) {
var phrase = "Hello"; // определение переменной и присвоение значения переменной
}
console.log(phrase); // получим сообщение -> Hello
}
sayHi();
console.log(phrase); // Error
Если блок кода находится внутри функции, то var становится локальной переменной в этой функции:
У var область видимости function или global
function sayHi() {
console.log(phrase); // undefined.
// при запуске функции у нас сначала обьявится переменная
// которая созданная через var
// свяжим переменную с ячейкой памяти
var phrase = 'Hello'; // выполняем присвоение значения
console.log(phrase); // выведем Hello
}
sayHi();
«var» обрабатываются в начале запуска функции
Объявления переменных var обрабатываются в начале выполнения функции (или запуска скрипта, если переменная является глобальной).
«let» не можем вызвать до определения переменной, будет ошибка!
Существует 2 основных отличия var от let/const:
- Переменные var не имеют блочной области видимости, они ограничены, как минимум, телом функции.
- Объявления (инициализация) переменных var производится в начале исполнения функции (или скрипта для глобальных переменных).
variables-diff
By Oleg Rovenskyi
variables-diff
var, let, const
- 201