Использование let | Using let

В ES5 есть две области видимости: глобальная и в пределах функции. В ES6 есть новая область видимости - облать ограниченная блоком кода, а именно: фигурными скобками. Для работы с ней имеется новое ключевое слово let, которую мы можем использовать для объявления новой переменной с ограниченной областью видимости.

  • Переменная объявленная с помощью let - будет видна только в пределах блока в котором она была объявлена.
if (true) {
	var version_es5 = 'ES5';
}
console.log(version_es5); // ES5

if (true) {
	let version_es6 = 'ES6';
}
console.log(version_es6); // ReferenceError: version_es6 is not defined
  • Переменная объявленная с помощью let - не поднимается и поэтому их нельзя использовать до их объявления.
console.log(version_es5);
var version_es5 = 'ES5'; // undefined


console.log(version_es6); // ReferenceError: can't access lexical declaration `version_es6' before initialization
let version_es6 = 'ES6';

Более практичный пример:

for (var i = 0; i < 5; i++) {
	setTimeout(function() { 
		console.log(i);
	}, 500);
}
// 5 5 5 5 5
for (let i = 0; i < 5; i++) {
	setTimeout(function() { 
		console.log(i);
	}, 500);
}
// 0 1 2 3 4