Три различия между let и var
Вот 3 основных различия в использовании let и var для создания переменных.
Оператор let объявляет локальную переменную с областью видимости внутри блока. Оператор блока используется для группировки операторов. Например
{
console.log("I am inside a block");
}
Отличие 1: Область видимости
Основное различие между var и let заключается в том, что область действия var является либо глобальной, либо локальной для объявленной функции, тогда как область действия let - это блок, в котором она объявлена.
Пример:
{
var x = 10; // create variable in global scope
let y = 20; // create variable in local scope
}
console.log(x); // 10
console.log(y); // ReferenceError: y is not defined
Отличие 2: Доступ к значению
Когда мы создаем переменную с помощью оператора var, мы можем получить доступ к значению (неопределенному по умолчанию) до того, как оно будет объявлено переменной.
console.log(x); // undefined
var x = 10;
console.log(x); // 10
Мы также можем сделать так:
var k = k ;
Приведенный выше код сначала проверит, есть ли какая-либо переменная, объявленная как k
да, у нас есть объявление,
поэтому он создаст переменную k
со значением undefined
, прежде чем выполнить var k = k;
теперь переменная
создана, а затем значение k(undefined)
будет снова присвоено k
. Приведенный выше код похож на:
z = 10; var z =z;
Но мы не можем сделать то же самое в let
console.log(y); // ReferenceError: y is not defined
let y = 10;
Также не получится сделать
let m = m; // Reference error m is not defined
Отличие 3: Привязка к глобальному объекту
Когда мы объявляем переменную с помощью var, она создает свойство глобального объекта.
var a = 10;
console.log(this.a); // 10
console.log(window.a); // 10
console.log(a); //10
console.log(globalThis.a); // 10
Но в let мы не можем сделать то же самое, потому что let не создает свойство для глобального объекта.
let z= 10;
console.log(z); //10
console.log(this.z); // undefined
console.log(window.z); // undefined
console.log(globalThis.z); // undefined
Заметка написана: 21.07.2020
Теги заметки: JavaScript, JS