JavaScript中變數提升是什麼?如何實現?

千鋒武漢發表於2021-09-06

      在進行 web前端開發的時候,我們經常會遇到變數提升的情況,那麼JS在解析變數的時候是如何做到提升的呢?今天小千就來帶大家瞭解一下。

      首先在JS中涉及兩種作用域的問題,那麼什麼是作用域呢?

      作用域是程式碼中所使用名字的作用範圍,分為Script全域性作用域和函式區域性作用域。 當瀏覽器在解析網頁內容時,會分別啟動不同的解析器來解釋程式碼的含義,如解析標籤(超文字)的解析器、解析CSS樣式的解析器,解析javascript指令碼的解析器。且解析過程為同步(按順序)解析。所以當瀏覽器解析到script標籤時,會停止對html和css的解析,同時啟動javascript的解析器。而在解析javascript的過程中我們主要關注解析器中的兩個步驟:

      1.預解析,即在當前作用範圍中去尋找var、function、形參這三個內容。

      如果找到var關鍵字、則提取var後面的名字放到當前作用域中,且預設給這個變數初始化一個值為undefined。

      如果找到function關鍵字,則提取函式名放到當前作用域中,且將整個函式塊賦值給函式名。

      如果找到形參,則將形參名放到當前作用域中,且預設初始化為undefined。這個過程也稱為變數提升。

      2.逐行解讀程式碼(即從上到下依次執行每一條語句)且分為兩個步驟: 執行表示式和 函式呼叫。

千鋒web前端培訓

      當變數名與函式名相同時:

千鋒web前端培訓2

      當有多個script標籤時: - 多個script標籤時,從上到下依次解析script作用域,所以建議將所有宣告的語句放到第一個script中。

千鋒web前端培訓3

      以上就是關於JS變數提升的介紹了,希望能幫到大家。最後歡迎對 web前端開發感興趣的同學關注小千,後期繼續為大家分享更多web前端技術知識。

      本文來自千鋒教育,轉載請註明出處。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31548651/viewspace-2790493/,如需轉載,請註明出處,否則將追究法律責任。

相關文章