Var, Let и Const — зарезервированные ключевые слова в JavaScript, используемые для объявления переменных/констант.

Давайте сначала поговорим о «var».

  1. Var ограничен функцией:

Что значит быть ограниченным функцией? Область действия функции означает, что переменные var могут быть объявлены и доступны в любом месте функции.

function hello () {
    var j = 3;
    if (j == 3) {
        var n = 3;
    }
    console.log("n: ", n);
    // this will log: "n: 3"
};

hello();

function hello () {
    var n = 5;
    console.log("n: ", n);
     // this will result in 5
    if (3 == 3) {
        console.log("n: ", n)
        // this will also result in 5
    };
};

hello();

Но у нас есть проблема с var, он позволяет повторно объявлять переменные внутри своей области видимости.

function hello () {
    var n = 5;
    console.log("n: ", n);
     // this will result in 5
    if (3 == 3) {
        var n = 3;
        console.log("n: ", n);
        // this will also result in 3
    };
    console.log("n: ", n);
    // this will result in 3
};

hello();

Как вы можете видеть в приведенном выше примере, переменная n переобъявлена ​​в «if-блоке», и ее значение изменилось вне блока, в результате чего:

Лакомый кусочек: в 2015 году был представлен ES6 (EcmaScript 6: EcmaScript — стандарт, на котором реализован JavaScript. Подробнее об этом здесь.) и на сцену вышли ключевые слова let и const.

2. Let имеет блочную область действия:

Будучи блочной, это означает, что переменные, объявленные с помощью let, доступны только внутри блока. Блок определяется фигурными скобками {} скобки. Это может быть блок if, for, while, do-while и т. д.

function hello () {
    var n = 5;
    console.log("n: ", n);
     // this will result in 5
    if (3 == 3) {
        let n = 3;
        console.log("n: ", n);
        // this will also result in 3
    };
    console.log("n: ", n);
    // this will result in 5
};
hello();

Как видно из журналов, переменная, объявленная с тем же именем «n» в блоке if, отличается от переменной вне блока и содержит другое значение.

Еще один важный момент, связанный с let, заключается в том, что мы не можем повторно объявлять переменные, объявленные с помощью let, в том же блоке. Следующий код приведет к синтаксической ошибке.

function hello () {
    var n = 5;
    console.log("n: ", n);
    if (3 == 3) {
        let n = 3;
        console.log("n: ", n);
        let n = 4;
        // SyntaxError: Identifier 'n' has already been declared
    };
};
hello();

Постоянное ключевое слово:

Объем:

Что касается области действия, ключевое слово «const» имеет ту же область действия, что и let, т. е. имеет блочную область действия.

Использовать:

Основное отличие const от var и let заключается в том, что переменные, определенные с ним, являются константами. Звучит парадоксально, правда? Вот почему мы называем их просто константами. Вы не можете повторно присвоить какие-либо значения константам, в отличие от переменных, значения которых могут варьироваться, как видно из их имени. Повторное присвоение приведет к ошибке типа.

function hello () {
    const n = 3;
    n = 4;
};
hello();

Подъем:

Подъем — одна из важных концепций, которую следует изучить, когда мы обсуждаем область видимости переменных. Всякий раз, когда мы определяем переменную с var в функции, она поднимается на вершину функции. Это означает, что переменная была объявлена ​​сверху. Большинство других языков программирования не позволяют поднимать переменные, нужно сначала объявить переменную, прежде чем использовать ее. Например:

function hello () {
    n = 5;
    console.log("n: ", n);
     // this will result in 5
    var n = 3;
   
};
hello();

Здесь примечательным моментом является то, что «n» не приведет к 5, потому что поднимается только объявление, а не инициализация. В console.log без какой-либо предварительной инициализации его значение будет неопределенным.

function hello () {
    console.log("n: ", n);
    var n = 3;
   
};
hello();

Переменные/константы, определенные с помощью let и const, не поддерживают подъем.

Эти примеры приведут к ошибкам ссылок.

function hello () {
    console.log("n: ", n);
    let n = 3;
   
};
hello();
function hello () {
    console.log("n: ", n);
    const n = 3;
   
};
hello();

Спасибо, что прочитали его до сих пор, пожалуйста, поделитесь своим ценным отзывом. Это поможет мне улучшить эти статьи.