JavaScript中變數提升是什麼?如何實現?
在進行 web前端開發的時候,我們經常會遇到變數提升的情況,那麼JS在解析變數的時候是如何做到提升的呢?今天小千就來帶大家瞭解一下。
首先在JS中涉及兩種作用域的問題,那麼什麼是作用域呢?
作用域是程式碼中所使用名字的作用範圍,分為Script全域性作用域和函式區域性作用域。 當瀏覽器在解析網頁內容時,會分別啟動不同的解析器來解釋程式碼的含義,如解析標籤(超文字)的解析器、解析CSS樣式的解析器,解析javascript指令碼的解析器。且解析過程為同步(按順序)解析。所以當瀏覽器解析到script標籤時,會停止對html和css的解析,同時啟動javascript的解析器。而在解析javascript的過程中我們主要關注解析器中的兩個步驟:
1.預解析,即在當前作用範圍中去尋找var、function、形參這三個內容。
如果找到var關鍵字、則提取var後面的名字放到當前作用域中,且預設給這個變數初始化一個值為undefined。
如果找到function關鍵字,則提取函式名放到當前作用域中,且將整個函式塊賦值給函式名。
如果找到形參,則將形參名放到當前作用域中,且預設初始化為undefined。這個過程也稱為變數提升。
2.逐行解讀程式碼(即從上到下依次執行每一條語句)且分為兩個步驟: 執行表示式和 函式呼叫。
當變數名與函式名相同時:
當有多個script標籤時: - 多個script標籤時,從上到下依次解析script作用域,所以建議將所有宣告的語句放到第一個script中。
以上就是關於JS變數提升的介紹了,希望能幫到大家。最後歡迎對 web前端開發感興趣的同學關注小千,後期繼續為大家分享更多web前端技術知識。
本文來自千鋒教育,轉載請註明出處。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31548651/viewspace-2790493/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- JavaScript變數提升JavaScript變數
- JavaScript變數的生命週期:為什麼let不被提升JavaScript變數
- 什麼是環境變數?Python中如何設定環境變數?變數Python
- JavaScript中是如何定義私有變數的JavaScript變數
- 關於JavaScript變數提升JavaScript變數
- JavaScript中的預解析(變數提升)介紹!JavaScript變數
- JavaScript中的預解析(變數提升)介紹JavaScript變數
- 軟體測試學習中JavaScript中變數和作用域式是什麼?JavaScript變數
- javascript之變數提升與函式提升JavaScript變數函式
- Scala 變數是什麼變數
- 在python中什麼是私有變數域Python變數
- Javascript 函式和變數提升JavaScript函式變數
- 關於javascript中變數及函式的提升JavaScript變數函式
- javascript中null是什麼JavaScriptNull
- 在Linux中,什麼是環境變數?如何設定和檢視環境變數?Linux變數
- javascript中怎麼判斷某變數是null,undefined,還是不存這個變數 ? 以及變數是array 還是 object 還是 null ?JavaScript變數NullUndefinedObject
- javascript中閉包是什麼JavaScript
- [譯] JavaScript中的“this”是什麼?JavaScript
- javascript中web worker是什麼JavaScriptWeb
- 廣告變現是什麼
- 什麼是RPC ? 用PHP如何實現?RPCPHP
- WHQL認證是什麼?如何實現
- c++ 原始碼中&&變數是什麼意思呢?C++原始碼變數
- 什麼是環境變數?python設定環境變數有什麼用?變數Python
- javascript中window.$是什麼意思JavaScript
- 什麼是單點登入?如何實現?
- 什麼是容器編排,Kubernetes如何實現
- Phala Network是什麼?如何實現挖PHA?
- Python 中的可變引數: 什麼是*args和**kwargs?Python
- 什麼是DNS解析?如何提升DNS解析安全?DNS
- 什麼是JavaScript?JavaScript
- 什麼是介面?如何定義介面?如何實現介面?
- 到底什麼是質量意識?如何衡量,如何提升?
- Java是如何實現跨平臺的?原理是什麼?Java
- javascript中如何判斷變數的型別?JavaScript變數型別
- 【譯】JavaScript中純函式是什麼JavaScript函式
- 什麼是原子操作?Java如何實現原子操作?Java
- 動畫:「變數提升」原理中的變數真的進行提升了嗎?動畫變數