每日一題20191204

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);

解析:

  1. 沒有用var聲明的是全局變量,即便在函數內部;
  2. 只有在function內部新聲明的纔是局部變量,在if,while,for等聲明的變量其實是全局變量(除非本身在function內部)
  3. 因爲變量提升,雖然if塊的內容沒執行,但是預解析階段會執行var a,只是沒有賦值而已,因此打印a是undefined而打印b會報錯

答案:undefined 30 報錯:b is not defined

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章