var vs let
var apples = 5; if (true) { var apples = 10; alert(apples); // 10 (внутри блока) } alert(apples); // 10 (снаружи блока то же самое)let apples = 5; // (*) if (true) { let apples = 10; alert(apples); // 10 (внутри блока) } alert(apples); // 5 (снаружи блока значение не изменилось)if (true) { let apples = 10; alert(apples); // 10 (внутри блока) } alert(apples); // ошибка!alert(a); // undefined var a = 5;alert(a); // ошибка, нет такой переменной let a = 5;let x; let x; // ошибка: переменная x уже объявлена// каждый цикл имеет свою переменную i for(let i = 0; i<10; i++) { /* … */ } for(let i = 0; i<10; i++) { /* … */ } alert( i ); // ошибка: глобальной i нетfor(var i=0; i<10; i++) { /* … */ } alert(i); // 10function makeArmy() { let shooters = []; for (let i = 0; i < 10; i++) { shooters.push(function() { alert( i ); // выводит свой номер }); } return shooters; } var army = makeArmy(); army[0](); // 0 army[5](); // 5
Last updated