var — это функциональная область видимости, она будет использоваться везде в коде, как и глобальная переменная, учитывая несколько значений для этой переменной, но она принимает последнее назначенное значение.
Замыкание – это комбинация функции, заключенной в другую функцию. Другими словами, замыкание дает вам доступ к области действия внешней функции из внутренней функции. В JavaScript, как указано выше, изображение, такое как setTimeout(), тогда setTimeout() не означает закрытие, это просто функция javascript, что бы в этом месте ни было (анонимная функция), это было бы закрытие
это повлияет на закрытие, поэтому в javascript es6 появились let и const.
и let, — это область блока, в которой он будет работать только в { }, поэтому мы можем использовать переменную с тем же именем вне функции, но var это не так
Блочная область let
в этом случае означает, что i
будет создавать несколько назначенных переменных let за пределами этого цикла, тогда как с var
это будет то, что было последним ее значением.
ex:
for (let i = 1; i <= 5; i++) {
setTimeout(function() {
console.log(i);
}, 1000);
}
Это то же самое, что сделать это:
{
let i = 1;
setTimeout(function() {
console.log(i);
}, 100);
}
{
let i = 2;
setTimeout(function() {
console.log(i);
}, 100);
}
{
let i = 3;
setTimeout(function() {
console.log(i);
}, 100);
}
{
let i = 4;
setTimeout(function() {
console.log(i);
}, 100);
}
{
let i = 5;
setTimeout(function() {
console.log(i);
}, 100);
}
Спасибо за потраченное время