Я играю с let
в Node.JS (требуется флаги --harmony
и --use-strict
). Как я понимаю, оператор let
разрешает объявления с блочным охватом. Учитывайте следующее:Действительно ли для циклов неявно создавать блок?
let a;
for(let i = 0; i < 3; i += 1) {
console.log(i);
}
Сколько блоков охвачено? В каком блоке области i
жить? Правильно ли я полагаю, что для этого примера работать, есть области блока, с одной областью, неявно созданной циклом for
, следующим образом?
{ // block #1
let a;
{ // block #2 (contains `i`)
let i;
for(i = 0; i < 3; i += 1) { // block #3
console.log(i);
}
}
}
А, я вижу, что вы там делали. Очевидно, что для ясности вы не хотите этого делать в реальном коде. Некоторые языки, такие как C#, фактически препятствуют повторному использованию имени переменной во внутренней области (чтобы обеспечить ясность), хотя это сработает. –
, если вы используете let, вы получаете область блока, по крайней мере, в циклах. – dandavis
Это похоже на то, что вы можете объявить много переменных с тем же именем внутри функции, например, и это допустимо с 'let', но не' var'. – elclanrs