今天的主題是「提升」,我們直接舉一個能快速了解提升的例子
正常來說,在變數未宣告之前就使用會回傳一個錯誤
console.log(a); //a is not defined
但是當你在 console 下方加上變數宣告,會發生一件神奇的事
console.log(a);
var a = 1;
//undefined
輸出結果是 undefined
,並非 a is not defined
,原因是因為宣告被「提升」上去了。
執行時期所有用 var 宣告的變數,都會自動提升至範圍第一行
以上就是最基本的,提升的特性。
另外值得注意的一件事,只有宣告被提升,賦值的部分並沒有一起被提升。若想要更深入了解,大家需要先知道 Javascript 的執行環境分為兩個階段:創造環境 以及 執行
undefined
所以其實在創造環境時就已經先建立 var = a;
到了執行時才加上 a = 1;
,可以想像是拆成以下步驟
//創造環境
var a;
//執行
console.log(a); //undefined
a = 1;