變數提公升和函式提公升

2021-10-25 04:37:58 字數 1362 閱讀 6736

1.變數宣告提公升:

通過var 定義(宣告)的變數,在定義語句之前就可以訪問到。

值:undefined

console.

log(a)

;//undefined

var a =23;

console.

log(a)

;//23

上面**等價於:

var a ;

//預編譯,將變數宣告提公升至當前作用域的頂端,初始值為undefined

console.

log(a)

;//變數a通var進行了定義卻沒有賦值,所以控制台輸出undefined

a =23

;console.

log(a)

;//將23賦給了變數a,所以控制台輸出10

2.函式宣告提公升

通過function宣告的函式,在之前就可以直接呼叫

值:函式定義(物件)

fn()

;//hello kb

functionfn(

)fn()

;//hello kb

3.名稱相同的function函式,後面的將覆蓋先寫的

fn()

;//hi lbj

functionfn(

)fn()

;//hi lbj

functionfn(

)function()

fn();

//hi lbj

4.函式提公升的優先順序大於變數提公升的優先順序

console.

log(a)

;//ƒ a()

functiona(

)var a =23;

console.

log(a)

;//23

上面**等價於:

vara=

function()

var a;

console.

log(a)

;// f ()

a =23;

console.

log(a)

;// 23

總結:

在**執行前,解析器會將將變數宣告提公升到當前作用域的前面,初始值為undefined

名稱相同的function函式,後面的將覆蓋先寫的

函式提公升的優先順序大於變數提公升的優先順序

變數提公升和函式提公升

首先js引擎在讀取js 時會進行兩個步驟,第乙個步驟是解釋,第二個步驟是執行。所謂解釋就是會先通篇掃瞄所有的js 然後把所有宣告提公升到頂端,第二步是執行,執行就是操作一類的。例子1 console.log a 輸出結果 undefined var a 10 script 以上 輸出 undefin...

javascript變數提公升和函式提公升

variable hoisting變數提公升是js比較有特點的地方,它允許你先使用變數,在其後面再進行變數宣告,不會丟擲 uncaught referenceerror異常。雖然變數被提公升到前面,但是它的預設值則是undefind,在引用的時候也使用這個值,知道在其面後進行賦值,在使用時候即為所贖...

JS函式提公升和變數提公升

js引擎在執行整個js 的過程中,分為倆步。第一步是讀取和解析js 第二部是執行。在引擎解析js 的時候,當解析器遇見變數宣告 var 變數名 和函式宣告 function 函式名 的時候,會將這些宣告提到各自作用域的最前面。在es6之前,js是沒有塊級作用域的。只有2種作用域 注 在其他語言中,被...