fun1(); //1
fun2(); //Uncaught TypeError: fun2 is not a function
//function聲明
function fun1(){console.log(1)};
//function表達式
var fun2=function(){console.log(2)};
let fun3=function(){console.log(3)};
function表達式雖然提升失敗,被說fun2不是一個function不被承認QQ,
但並沒有破壞規則,規則還是原本那個規則喔~~來,上原因
GO{
fun1 : function fun1(){......},
fun2 : undefined
}
沒錯,因為他電腦看到var fun2=
,就覺得他是一個原始值
,不是function引用值
。
殊不知等號右邊是一個可愛的function。失算失算
那猜猜 fun3()
的執行結果呢?
.
.
.
.
.
.
.
.
.Uncaught ReferenceError: Cannot access 'fun3' before initialization
因為是let不會提升,不會初始化