【Web前端培訓】預解析(變數提升)
今天千鋒小編為大家介紹一下一下JavaScript中的預解析(變數提升)。從什麼是預解析及變數的預解析和函式的預解析及載入流程進行學習(注意:我們這裡說的ES5中的預解析)。
什麼是解析
首先程式碼執行肯定需要一個執行環境,瀏覽器會提供一個供javaScript執行的全域性作用域window。但是在javaScript執行之前會進行預解析,又稱之為變數提升。預解析可以分為兩部分:
- 宣告(declare): var a; 簡單的去理解宣告就是我們宣告一個變數沒有賦值;
- 定義(defined):a= 100; 定義相當於給這個變數進行賦值;
在javaScript執行之前瀏覽器會把全域性作用域下所有帶有var和function關鍵字的進行預解析(注意是帶有var和function關鍵字的),這也就是為什麼我們學習預解析去學習變數的預解析及函式的預解析原因,變數的預解析和函式的預解析存在一定的區別如下:
- var :在預解析的時候只宣告不定義
- function:在預解析的時候宣告+定義都已經完成了
變數的預解析
現在有如下程式碼:
這也就是為什麼在我們看到var a = 10;之前去輸出a沒有報錯而是輸出undefined;宣告一個變數沒有進行賦值那麼就是undefined;
函式的預解析及載入流程
前面我們說過了函式再預解析的時候宣告+定義都已經完成了,現在有如下程式碼:
我們先去看下函式的載入流程:
1. 函式在預解析的時候宣告+定義都已經完成了
2. 因為函式是引用資料型別,會新開闢一個堆記憶體空間,將函式以字串的形式進行儲存,並且會給這堆個記憶體空間分配一個記憶體地址比如xxxfff000
3.函式的呼叫的時候,會開闢一個新的私有作用域,將函式體中內容從上到下依次執行
4.函式每一次呼叫都是相互獨立的,並且函式執行完畢之後自動銷燬
方便大家理解載入流程如圖所示:
從上圖可以分析出函式先進性了預解析,在預解析的時候宣告+定義都已經完成了,並且開闢了一塊堆記憶體空間將函式以字串的形式進行儲存,並且給這塊堆記憶體分配一個記憶體地址便於我們使用的時候去找到它,因為這個時候函式以字串的形式進行儲存,也就是為什麼函式定義函式不去呼叫是不能執行的。
當我們呼叫的時候發現,開闢了個一個新的私有作用域,函式體從上到下去執行,並且每一次呼叫都會形成新的私有作用域,所以是相互獨立的,並且每一個私有作用執行完畢就自動銷燬了,是瀏覽器內建的垃圾回收機制。這樣保證了效能最佳化。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69996644/viewspace-2764534/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- web前端-js變數提升Web前端JS變數
- Web前端培訓面試攻略Web前端面試
- web前端培訓哪家好?Web前端
- web前端培訓要學多久Web前端
- JavaScript中的預解析(變數提升)介紹JavaScript變數
- JavaScript中的預解析(變數提升)介紹!JavaScript變數
- js作用域(變數提升,預解析)例題JS變數
- Web前端培訓分享:Web前端到底是什麼?Web前端
- web前端培訓需要學多久呢Web前端
- 培訓的Web前端什麼水平Web前端
- 長沙web前端培訓班學費多少?長沙培訓前端多少錢?Web前端
- web前端培訓之Javascript如何改變陣列的長度?Web前端JavaScript陣列
- 前端 -- JS變數提升前端JS變數
- 長沙Web前端培訓分享:Web前端學習路線Web前端
- Web前端培訓分享:Web前端三大主流框架對比!Web前端框架
- web前端培訓:常用的Web前端開發框架有哪些?Web前端框架
- web前端培訓分享:web前端的工作方向是什麼?Web前端
- web前端培訓學習技巧有哪些Web前端
- Web前端培訓分享:前端開源平臺介紹Web前端
- web前端培訓React效能優化總結Web前端React優化
- web前端培訓分享Electron之Main Process APIWeb前端AIAPI
- web前端培訓分享Electron之IPC 通訊Web前端
- web前端開發主要培訓哪些內容Web前端
- Web前端培訓發展前景怎麼樣?Web前端
- web前端培訓分享node學習筆記Web前端筆記
- 長沙Web前端培訓機構哪裡好?花錢培訓值得嗎?Web前端
- 好程式設計師Java培訓分享HashMap成員變數解析程式設計師JavaHashMap變數
- Web前端培訓:有哪些好用的前端開發工具呢?Web前端
- Web前端學習路線資料彙總,Web前端培訓學校Web前端
- 想要轉行Web前端,需要參加長沙Web前端培訓班嗎?Web前端
- 除了參加長沙Web前端培訓,能自學Web前端開發嗎?Web前端
- Java培訓教程分享:變數與常量Java變數
- web前端培訓後的工作方向是什麼Web前端
- 如何正確選擇Web前端培訓機構Web前端
- 如何分辨Web前端培訓機構的好壞Web前端
- 參加web前端培訓需要注意什麼Web前端
- 參加web前端培訓要學哪些知識Web前端
- 哪些人適合學web前端培訓呢?Web前端