摘要:變量提升變量提升即將變量聲明提升到它所在作用域的最開始的部分,即函數聲明和變量聲明總是被解釋器隱式地提升到包含他們的作用域的最頂端。閑先聲明一個變量名為的變量,同時賦值為。但是,上面的代碼運行的結果是這就是我今天關注的東西變量提升。
變量提升
變量提升即將變量聲明提升到它所在作用域的最開始的部分,即函數聲明和變量聲明總是被JavaScript解釋器隱式地提升(hoist)到包含他們的作用域的最頂端。在ES6之前,JavaScript沒有塊級作用域(一對花括號{}即為一個塊級作用域),只有全局作用域和函數作用域。
首先看一段簡單的代碼
var name = "Clam"; (function (){ console.log(name); })(); // Clam
上面的代碼很簡單。閑先聲明一個變量名為name的變量,同時賦值為Clam。后面是一個立即執行函數,在函數體中控制臺輸出name。結果為Clam,沒毛病~接著看下面的代碼。
簡單的修改一下上面的代碼
var name = "Clam"; (function (){ console.log(name); var name = "Klay"; })()
首先我們自己分析一下上面的代碼哈:首先聲明了一個變量name并且賦值為Clam,緊接著也是一個立即執行函數,在函數體中首先控制臺輸出了name,但是之后,又聲明了賦值了一次變量name。
那我來猜想一下,恩,控制臺輸出了Clam,但是在立即執行函數結束之后,變量name的值被修改成了Klay。
但是,上面的代碼運行的結果是:
undifined // exm??
這就是我今天關注的東西:變量提升。
前面說過,變量提升會將變量的聲明提升到其作用域的最前端。這里,name所在的作用域就是指這個函數作用域,上面的代碼就相當于以下代碼。
var name = "Clam"; (function (){ var name; console.log(name); //undefined name = "Klay"; })()函數提升
js中創建函數有兩種方式:函數聲明式和函數字面量式。只有函數聲明才存在函數提升。
console.log(f1); // function f1() {} console.log(f2); // undefined function f1() {} var f2 = function() {}
以上,enjoy
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/89202.html
摘要:變量提升什么是變量提升在函數體內聲明的變量,無論你是在函數的最底端還是中間聲明的,那么都會把該變量的聲明提升到函數的最頂端相當于第一行,但是只是提升變量的聲明,不會賦值。 1、變量提升 什么是變量提升?在函數體內聲明的變量,無論你是在函數的最底端還是中間聲明的,那么都會把該變量的聲明提升到函數的最頂端(相當于第一行),但是只是提升變量的聲明,不會賦值。 var num = 10; fu...
摘要:代碼在執行時并不完全是由上到下一行一行執行的,由此產生了一個提升的問題。第二個賦值聲明會被留在原地等待執行階段。可以得知函數聲明提升的優先權大于普通變量聲明。 JavaScript代碼在執行時并不完全是由上到下一行一行執行的,由此產生了一個提升的問題。 什么是提升 可以簡單理解為:聲明(變量和函數)都會被移動到各自作用域的最頂端,這個過程被稱為提升。 具體例子看提升 下面兩個例子a會l...
摘要:即的變量提升此處變量未聲明時便可以使用,其實是因為會自動將聲明語句提升到頂部。但名字的初始化卻是按其在代碼中書寫的順序進行的,不受以上優先級的影響。 變量提升(hoisting) 在JavaScript中,函數、變量的聲明都會被提升(hoisting)到該函數或變量所在的scope的頂部。即——JavaScript的變量提升. var x = 5; alert(x); ...
摘要:作用域的類別可以影響到變量的取值,分為詞法作用域靜態作用域和動態作用域。而,采用的就是詞法作用域,或者叫靜態作用域。 關于javascript中的作用域和作用域鏈 我GitHub上的菜鳥倉庫地址: 點擊跳轉查看其他相關文章 文章在我的博客上的地址: 點擊跳轉 ? ? ? ? 前面的文章說到, 執行上下文的創建階段,主要有三個內容: ? ? ? ? 1、創建變量對象;2、初始化作用域...
摘要:不同的是函數體并不會再被提升至函數作用域頭部,而僅會被提升到塊級作用域頭部避免全局變量在計算機編程中,全局變量指的是在所有作用域中都能訪問的變量。 ES6 變量作用域與提升:變量的生命周期詳解從屬于筆者的現代 JavaScript 開發:語法基礎與實踐技巧系列文章。本文詳細討論了 JavaScript 中作用域、執行上下文、不同作用域下變量提升與函數提升的表現、頂層對象以及如何避免創建...
閱讀 2478·2021-11-16 11:45
閱讀 2450·2021-10-11 10:59
閱讀 2255·2021-10-08 10:05
閱讀 3834·2021-09-23 11:30
閱讀 2375·2021-09-07 09:58
閱讀 806·2019-08-30 15:55
閱讀 778·2019-08-30 15:53
閱讀 1927·2019-08-29 17:00