var f = 1;
if(!f) {
var a = 10;
}
function fn() {
var b = 20;
c = 30;
}
fn();
console.log(a);
console.log(c);
console.log(b);
解析:
- 沒有用var聲明的是全局變量,即便在函數內部;
- 只有在function內部新聲明的纔是局部變量,在if,while,for等聲明的變量其實是全局變量(除非本身在function內部)
- 因爲變量提升,雖然if塊的內容沒執行,但是預解析階段會執行var a,只是沒有賦值而已,因此打印a是undefined而打印b會報錯
答案:undefined 30 報錯:b is not defined