let和const變量學習
阿新 • • 發佈:2018-11-08
就是 abc 對象 fine ren typeof var col 變量
typeof處於let聲明前是在暫時性死區中會報錯,
當並沒有聲明typeof的變量時反而不報錯,結果為undefined
1,var全局變量,let塊級變量
var a = [];
for (let i = 0;/*var i=0*/ i < 10; i++) {
a[i] = function () {
console.log(i);
};
}
a[6]();
//6 10
var變量導致全局範圍內有效,所以全局只
有一個變量i,最後輸出10而不是6
2,for循環有一個特別之處,就是設置循環變量的那部分是一個
父作用域,而循環體內部是一個單獨的子作用域。
for (let i = 0; i < 3; i++) {
let i = ‘abc‘;
console.log(i);
}
// abc
// abc
// abc
3,let不存在變量提升:
var存在變量提升現象,var聲明之前調用對象輸出undefinedvar存在變量提升現象,var聲明之前調用對象輸出undefined
let 則不存在這種現象所以直接報錯。
4,暫時性死區:
只要塊級作用域內存在let命令,它所聲明的變量就“綁定”
這個區域,不在受外部的影響
var tmp = 123;
if (true) {
tmp = ‘abc‘; // ReferenceError
let tmp;
}
暫時性死區表明typeof不再是一個百分百安全的操作
typeof處於let聲明前是在暫時性死區中會報錯,
當並沒有聲明typeof的變量時反而不報錯,結果為undefined
let和const變量學習