什麼是聲明提升?

瀏覽器引擎在解釋JS代碼之前,會對JS代碼進行編譯,其中一部分工作就是聲明提升,也就是找到所有的聲明,包括變量聲明和函數聲明都會被找到並在代碼塊執行前被處理。
比如var i = 0;這句話會被瀏覽器解讀成var i和i = 0兩句話執行。
其中var i會在編譯階段就會先執行,而i=0這段賦值代碼會在原地等待執行。
來個例子:

console.log(a)
var a = 2;

// undefined

// 其實這兩句代碼在實際運行的時候其實是這樣的:
var a;
console.log(a);
a = 2;

那麼函數聲明的提升,包括函數的代碼塊都會被一起提升,所以咱們在調用函數的時候,函數聲明已經被執行過了。

fn1();//可以執行
function fn1() {
    console.log("hello");
}

當函數聲明和變量聲明在一起時,

函數聲明提升在前,變量提升在後

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