js中的變數提公升和函式提公升

2021-07-29 03:54:49 字數 1018 閱讀 7592

一,變數提公升

顧名思義,變數提公升就是函式在執行時,會把在下面的變數提公升到函式的top位置,來看栗子:

var scope="hello";

function t()

t();

此時輸出的結果是  :

第乙個輸出undefined ,根據作用域鏈,函式內部訪問乙個變數時,會首先在作用域鏈的前端也就是函式內部尋找變數,找到變數scope,會把變數提公升到函式t()的top位置

也就是這樣的

var scope="hello";

function t()

t();

因此第一次輸出時,變數scope只定義了,並未初始化,因此輸出undefined,第二次輸出時,變數scope已經初始化了,因此輸出「nihao」的內容

二,函式提公升

我們再來看函式提公升,函式的建立有兩種方式,分別是函式表示式和函式宣告式,所謂函式提公升是指即使宣告函式的**在呼叫函式的**後面,js引擎也能把函式宣告提公升到頂部

//函式表示式

var foo=function()

foo();

//函式宣告式

function foo()

只是使用函式宣告式建立函式,才能進行函式提公升,函式表示式並不能進行函式提公升,

//可以進行函式提公升

foo();

function foo()

//無法進行函式提公升

js中的變數提公升和函式提公升

從上週開始,我所在的學習小組正式開始了angular的學習,angular是全面支援es6的,所以語法上和以前的angular有了很大的不同,比如變數宣告時就拋棄了var,而選擇了let和const 記得剛開始學習js的時候,使用webstrom時用var,webstrom會在下面畫一條小綠線,表示...

js中的變數提公升和函式提公升

從上週開始,我所在的學習小組正式開始了angular的學習,angular是全面支援es6的,所以語法上和以前的angular有了很大的不同,比如變數宣告時就拋棄了var,而選擇了let和const 記得剛開始學習js的時候,使用webstrom時用var,webstrom會在下面畫一條小綠線,表示...

js中的變數提公升和函式提公升

在js中在宣告變數或者函式時,會將變數或者函式的建立或者初始化放在 最頂端,而賦值過程仍在原地,這就是變數提公升 函式提公升 它並不是物理層面的 移動,而是在編譯時,會先放到記憶體中去。在es6中新增了let和const兩中宣告變數的方式,那麼它們和var相比較到底有什麼區別呢?首先我們先知道兩點 ...