Новое в ES6 переменные с let и const

Новое в ES6: let и const

До выхода ES6 в 2015 основным способом объявить переменную в JavaScript был var. С принятием стандарта ES6 у нас теперь есть - let, const, var. Давайте попробуем разобраться где и почему использовать то или другое при написании кода на JavaScript.

Var

Объявление переменной:

  var variableName;

Переменной объявленной при помощи var может быть присвоено новое значение или она может быть заново объявлена в рамках той области видимости (Scope) в которой находится.

Область видимости: глобальная и локальная. Переменная может быть объявлена вне функций и будет доступна из любой части JS-кода (глобально), или может быть объявлена внутри функции и будет доступна только в ней.

Пояснительные примеры:

// Повторное объявление переменной не вызывает ошибки
// Хотя смысла в этом и не много.
var name = 'Nikolay';
var name = 'Vasya';

Let

Объявление переменной:

  let firstName;

Как и var  переменной объявленной таким образом можно присвоить значение, но объявление заново подобной переменной в той же области видимости приведет к ошибке.

Область видимости: блок. Проще говоря переменная видна в рамках блока кода ограниченного скобками.

Пояснительный пример для var и let :

// Блочная область видимости для let
function checkScopeBlock() {
    for (let i = 1; i < 3; i++) {
        console.log("Block scope ", i);
    }
    console.log(i); 
    // Получим ошибку т.к. переменная за пределами блока где была объвлена
}
checkScopeBlock(); 

// локальная область видимости (внутри функции) для var:
function checkScopeLocal() {
    for (var i = 1; i < 3; i++) {
        console.log("Local scope ", i);
     }
    console.log(i); 
    // i=3 значение получено т.к. переменная видна внутри всей функции, благодаря hoisting
}
checkScopeLocal();

Как видно из примера переменная с var доступна даже за пределами цикла, т.к. имеет видимость в рамках всей функции. В то время как переменная с let доступна только внутри блока цикла, поэтому в этом примере уместнее использовать let для объявления переменной счетчика.

Const

Объявление переменной:

const PI = 22/7;

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

// Попробуем присвоить значение
const firstName = "Luciana";
firstName = "Mercy"; // Произойдет ошибка
console.log(firstName);

// Попробуем заново объявить
const lastName = "Luciana";
const lastName = "Mercy"; //Вызовет ошибку:   lastName has already been declared
console.log(lastName);  

Константы используются для объявления переменных "только для чтения" т.к. их значения не меняются по мере исполнения кода.

Область видимости: блок. Также как и у let .

Комментарии