摘要:瀏覽器在執行代碼時,會在運行前對帶有和關鍵字的代碼進行提前,這一過程被稱為變量提升。預解析值會發生在通過定義的變量和上。
最近在鞏固前端基礎,看到預解析和代碼執行部分,里面講到提到了聲明和提升,因為與我們的日常很密切,根據個人所得,寫一篇文章。
1. 先解釋一下什么叫預解析?
顧名思義,提前解析。瀏覽器在執行代碼時,會在js運行前對帶有var和function關鍵字的代碼進行提前,這一過程被稱為變量提升。預解析值會發生在通過var定義的變量和function上。
2. var關鍵字
通過var關鍵字定義的變量在進行預解析過程的時候,都是先聲明,然后賦值undefined。不管是否已經賦值,
// 1. alert(a); // undefined var a = 1; // 2. alert(b); // var b = function(){} // 3. alert(c); var c;
只要是var定義的,不管是變量還是函數,都是先賦值undefined。如果是變量,也不管是否賦值,在預解析階段都會被賦值為undefined。
3. 關鍵字function
在進行預解析的時候,function此時已經被聲明并且被定義了,但是他存儲數據的那個空間里面存儲的是代碼字符串,沒有任何意義。
alert(a); // 彈出的是下面的function function a(){} // 注意:函數在預解析的時候會將代碼分成兩部分來執行,第一部分是fn函數;第二部分是(),一個匿名函數,這時在執行過程中會報錯。如果小括號帶參數,如(2),雖然不會報錯,也打印出2,但是并不能把fn執行,不能當做參數傳遞給fn函數。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/98233.html
摘要:輸出的結果為輸出的結果為提升后輸出的結果為重新定義了變量輸出的結果為如果定義了相同的函數變量聲明,后定義的聲明會覆蓋掉先前的聲明,看如下代碼輸出練習的值是多少的值是多少第二題的解析請看這里參考資料文章文章中文版鏈接文章推薦文章變量提升 JavaScript 變量聲明提升 原文鏈接 一個小例子 先來看個例子: console.log(a); // undefined var a =...
摘要:但是碰到聲明提升,這種想法就會被打破。聲明一個函數進行相應的操作,會得到函數聲明提升的結果。由此可以發現變量和函數的聲明都會被提升在其他代碼的前面執行。一個普通塊內部的函數聲明通常會被提升到所在的作用域的頂部。的創建初始化和賦值均會被提升。 Javascript聲明提升 在分析聲明提升之前,我認為有必要知道的兩點: 一、引擎查詢變量的兩種方式 引擎查詢變量的方式可以分為LHS和RHS兩...
摘要:不同的是函數體并不會再被提升至函數作用域頭部,而僅會被提升到塊級作用域頭部避免全局變量在計算機編程中,全局變量指的是在所有作用域中都能訪問的變量。 ES6 變量作用域與提升:變量的生命周期詳解從屬于筆者的現代 JavaScript 開發:語法基礎與實踐技巧系列文章。本文詳細討論了 JavaScript 中作用域、執行上下文、不同作用域下變量提升與函數提升的表現、頂層對象以及如何避免創建...
摘要:函數和變量相比,會被優先提升。這意味著函數會被提升到更靠前的位置。僅提升聲明,而不提升初始化。 JavaScript 函數高級——執行上下文與執行上下文棧(圖解+典型實例分析) 變量提升與函數提升 變量聲明提升 通過 var 定義(聲明)的變量,在定義語句之前就可以訪問到 值:undefined /* 面試題 : 輸出 undefined */ var a = 3 ...
摘要:變量提升需要注意兩點提升的部分只是變量聲明,賦值語句和可執行的代碼邏輯還保持在原地不動提升只是將變量聲明提升到變量所在的變量范圍的頂端,并不是提升到全局范圍,說明如下會輸出變量提升之后的效果函數聲明會提升,但是函數表達式就不了。 問題 有些朋友可能會覺得javascript的代碼是從上到下,一行一行的解釋執行的。如果按照這樣的思路,在有些情況下閱讀代碼會得到錯誤的結果,考慮以下代碼: ...
摘要:生命周期假設這樣一個場景當解釋器剛進入一個包含的作用域時,則在任何語句執行之前,變量就已完成了聲明階段和初始化階段,且值為。當解釋器執行完,變量就已完成了初始化階段,離開了臨時死區,并具有的值。 變量提升是一個將變量聲明或者函數聲明提升到作用域起始處的過程。在本篇博文中,我們一起深入了解這個過程的更多細節。 變量的生命周期 當引擎使用變量時,它們的生命周期包含以下階段: 聲明階段,...
閱讀 3186·2021-11-24 09:39
閱讀 2923·2021-11-23 09:51
閱讀 887·2021-11-18 10:07
閱讀 3544·2021-10-11 10:57
閱讀 2740·2021-10-08 10:04
閱讀 2999·2021-09-26 10:11
閱讀 1046·2021-09-23 11:21
閱讀 2780·2019-08-29 17:28