В новых стандартах появилось новое ключевое слово let оно используется при объявлении переменных , напишем следующий код:
var a = 'var a';
let b = 'let b';
console.log(a ,b);
После запуска мы увидим результат:
var a let b , то есть мы убедились что наш браузер поддерживает новый стандарт.
Теперь рассмотрим первое отличие var от let.
var a = 1;
var a = 2;
console.log(a);
Результат при использовании var у нас будет 2
let b = 3;
let b = 4;
console.log(b);
Результатом выполнения этого кода будет ошибка, то есть при использовании let мы можем инициализировать переменную, только один раз, поэтому если мы в консоли напишем let L= 'let'; console.log(L); , то при повторном вводе у нас произойдет ошибка, и чтобы этот код заново отработал придется обновить нашу страницу.
Теперь рассмотрим следующее отличие, видимость переменных
С использованием var :
var a = 1;
function myFunction(){
console.log(a);
var b = 2;
if(true){
var c = 3;
console.log(b);
}
console.log(c);
}
myFunction();
Результатом данного кода будет:
1
2
3
C использованием let:
let a = 1;
function myFunction(){
console.log(a);
let b = 2;
if(true){
let c = 3;
console.log(b);
}
console.log(c);
}
myFunction();
Как видим он нам вывел:
1
2
На третьем аргументе нам выдало ошибку, это связано тем что переменная 'c' у нас задана или инициализирована в пределах блока if и следовательно обратиться к ней можно, только в этом самом блоке:
let a = 1;
function myFunction(){
console.log(a);
let b = 2;
if(true){
let c = 3;
console.log(b);
console.log(c);
}
}
myFunction();
Как видите с помощью инициализации переменных через ключевое слово let мы можем устанавливать видимость переменных в определенных блоках.
Под блоками подразумевается все, что находится между фигурных скобок {}
То есть мы можем написать код в таком виде:
let a = 1;
console.log(a);
function myFunction(){
let a = 2;
if(true){
let a = 3;
console.log(a);
}
console.log(a);
}
myFunction();
И нас будет результат:
1
2
3
То есть переменная 'a' инициализируется персонально для каждого блока. Что может разрешить проблемы глобализации переменных в js.
Надеюсь вам было интересно и вы теперь знаете, как еще можно работать с инициализацией переменных в js. Удачи!