一,變數提公升
顧名思義,變數提公升就是函式在執行時,會把在下面的變數提公升到函式的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相比較到底有什麼區別呢?首先我們先知道兩點 ...