// *** before: ***
var x = 10;
if (true) {
var x = 20;
console.log(x); // 20
}
console.log(x); // 20 - var не знает блочной области видимости
for (var i = 0; i < 3; i++) {
setTimeout(function () { console.log(i); }, 0);
}
// выведет 3, 3, 3 - переменная i одна на все итерации
// *** in version ES2015: ***
let x = 10;
if (true) {
let x = 20;
console.log(x); // 20
}
console.log(x); // 10 - у блока своя область видимости
for (let i = 0; i < 3; i++) {
setTimeout(() => console.log(i), 0);
}
// выведет 0, 1, 2 - у каждой итерации своя переменная i
const PI = 3.14;
// PI = 3; // TypeError: Assignment to constant variable.