for(let a = 0;a<4;a++){
console.log(a);//0,1,2,3
}
console.log(a);//a is not defined
2.我們在找工作面試的時候,不乏會出現以下題目:
1). 在調用a[3]時,我們希望輸出的結果是3,結果輸出的是10;是因爲i爲全局變量,每一次循環變量 i 都會改變,然而在console.log(i)中的i也是指向全局變量,所以導致輸出的值是最後一次循環所得的10;
var a = [];
for (var i = 0; i < 10; i++) {
a[i] = function () {
console.log(i);
};
}
a[3](); // 10
2).上邊的代碼改爲用 let 聲明變量時,會避免該問題:var a = [];
for (let i = 0; i < 10; i++) {
a[i] = function () {
console.log(i);
};
}
a[3](); // 3
3. 避免聲明提前的問題,即變量可以在聲明之前使用,值爲undefined,用let聲明變量則不會出錯。例:console.log(foo); // 輸出undefined
var foo = 2;
// let 的情況
console.log(bar); // 報錯ReferenceError
let bar = 2;
4. 不允許重複聲明let a = 1;
let a = 10;//報錯
5.const聲明一個只讀的常量。一旦聲明,常量的值就不能改變。const PI = 3.1415;
PI // 3.1415
PI = 3;
// TypeError: Assignment to constant variable.