Changes in new versions / ES2015

// *** 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.