JavaScript--變量提升

什麼是變量提升?

JavaScript引擎的工作方式是,先解析代碼,獲取所有被聲明的變量,然後再一步一步地運行。這造成的結果,就是所有的變量的聲明語句,都會被提升到代碼的頭部,這就叫變量提升


例1:

console.log(a);

var a=1;


上面的代碼首先使用console.log()方法,在控制檯顯示變量a的值,因爲a還沒有聲明和復賦值,但是並不會報錯,因爲變量提升了變成如下:

var a;

console.log(a);  //undefined

a=1;


需要注意的一點:

變量提升只對var命令聲明的變量有效,如果一個變量不是用var命令聲明的,就不會發生變量提升



例2:

console.log(b);

b=1;


因爲b沒有用var聲明,所以不會發生變量提升,所有console.log(b)的執行結果會顯示b沒有聲明ReferenceError: b is not defined


例3:

var a=1;

console.log(a);   

console.log(b);

var b=2;

console.log(c);

c=3;


上面代碼會變成:

var a;

var b;

a=1;

console.log(a);  //1

console.log(b);  //undefined

b=2;

console.log(c);  //報錯

c=3;


因爲變量提升,a,b是用var聲明的變量,所以被提升到代碼頭部,值留在原地,c不是用var變量聲明的,所以無法變量提升。



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