Переменные let и const в Javascript.

До ES6 единственным способом создать переменную в javascript было использование ключевого слова var:

var x = 10;

Начиная с ES6, есть два новых ключевых слова, let и const . Ниже приведен пример их использования:

let x = 10;

const x = 10;

Оба они делают одно и то же. они объявляют переменную «x» и присваивают ей значение «10».

Давайте посмотрим на некоторые сходства между let и const :

Переменные области действия блока

let и const позволяют объявлять переменную области видимости блока. Это означает, что всякий раз, когда вы создаете переменную, используя let и const внутри {} , эти переменные будут доступны только внутри скобок.

if (true) { 
  let a = 10;
}
console.log(a);

Когда механизм javascript выполняет этот код, он будет искать переменную a в области видимости, но a не будет доступен, поскольку переменная доступна только внутри блока if . Мы получим справочную ошибку. Такое же поведение будет и при использовании const вместо let .

Повторное объявление невозможно.

Всякий раз, когда вы пытаетесь повторно объявить одну и ту же переменную в пределах той же функции или области блока, вы получите сообщение об ошибке.

if (true) { 
  let a = 10; 
    let a = 10;
}

Но вы можете объявить то же имя переменной в другой области, как показано ниже:

if (true) { 
  let a = 10;
}
let a = 10;

Возможность поднятия let и const.

Распространенное заблуждение, что переменные let и const не поднимаются. Давайте посмотрим на пример, где мы можем доказать, что их действительно поднимают:

var age = 20;
if (true) { 
  console.log(age); 
    let age = 100; 
    console.log(age);
}

Предположим, что если переменные let и const не поднимаются, то приведенный выше код должен выполняться без каких-либо ошибок. Но вместо этого мы получим ошибку:

image.png

Единственное логическое объяснение этому состоит в том, что переменные let и const поднимаются.

Скопируйте приведенный выше код и запустите его в консоли вашего браузера.

Переменная, объявленная с помощью let и const, поднимается. Но поведение отличается от подъема переменной var . Когда переменная var поднимается, движок javascript инициализирует их с помощью undefined, но let и const остаются неинициализированными.

Они будут инициализированы только тогда, когда движок javascript оценит их лексическую привязку (назначение) во время выполнения. Это означает, что вы не сможете получить доступ к переменным, пока движок не оценит их значение в том месте, где оно было объявлено в исходном коде. Это то, что мы называем временной мертвой зоной , термин, описывающий состояние, в котором переменные недоступны. Они включены в область видимости, но не инициализированы.

Разницу между let и const :

Единственное различие между ними состоит в том, что вы можете присвоить новое значение переменной let, но не переменной const.

let a = 10;
const b = 20; 
a = 100;
b = 200; //TypeError: Assignment to constant variable.

Давайте посмотрим на переменную const , значение которой является ссылкой на объект.

const blogSite = { 
  name: "HashNode",
}; 
blogSite.name = "Google";
//this is allowed. 
blogSite = {};
// this is not allowed
//TypeError: Assignment to constant variable.

Причина сбоя последней строки в том, что мы пытаемся обновить ссылку, присвоенную переменной const, что недопустимо.

Ответить