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種作用域 注 在其他語言中,被...