В ES6 было выпущено новое объявление переменных let и const.
Эти объявления хороши, потому что до ES6 мы не могли использовать переменные с блочной областью видимости. Единственное объявление, которое мы могли использовать, было «var», у которого есть область видимости функции, но не область видимости блока. Это вызвало множество ошибок по всему миру (вероятно).

// before ES6
function getNames() {
    for (var i = 1; i <= 10; i++) {
        // declare with var
        var name = "Marcus" + i;
        console.log(name);
    }
    // this "name" variable still has value
    console.log(name);  // this code shows "Marcus10"
}

Замечательный ES6 изменил это досадное заявление. Объявления let и const имеют область видимости блока, к которой можно получить доступ в том же блоке, но нельзя получить доступ извне блока.

// after ES6
const getNames = () => {
    for (let i = 1; i <= 10; i++) {
        // const (or let) effects only inside of this block scope
        const name = `Marcus${i}`;
        console.log(name);
    }
    // below code gets error because the variable "name" is not declared in this scope
    console.log(name);
}

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

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

  • Используйте сначала «const», когда хотите использовать переменные.
  • Затем, если вам нужно изменить значение самой переменной, используйте let вместо const. (примечание: внутренняя часть переменной, объявленной с помощью «const», может быть изменена, как внутри объекта или массива)
  • Никогда не используйте var, если вы используете ES6.

(Если «var» уже был объявлен, вы можете изменить его, но делайте это осторожно и посмотрите, что произойдет, когда вы запустите код после изменения объявления.)