В 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» уже был объявлен, вы можете изменить его, но делайте это осторожно и посмотрите, что произойдет, когда вы запустите код после изменения объявления.)