定義函式的兩種常見的方法:
1 . 函式宣告
2. 函式表示式
# 差異
(1)函式宣告 ,具有函式宣告提公升的特徵。
(2)函式宣告的函式的name屬性為函式的名稱;使用函式表示式定義的函式在es5中,name屬性為空字串,在es6中為函式的名稱。
# 函式宣告提公升
函式宣告
1 sayhello();//在函式宣告之前呼叫函式不會報錯,因為函式宣告提公升。
2function
sayhello()
函式表示式
1 sayhello();//typeerror: sayhello is not a function 使用函式表示式的方法定義函式,在變數宣告函式之前呼叫函式會報錯。
2var sayhello = function
()6 sayhello();//
在這裡呼叫不會報錯。
# 注意以下這種情況
1//不要這樣做。由於函式宣告提公升的原因,以下**在ecmascript中屬於無效語法,瀏覽器嘗試修正的錯誤的做法不一致。p176
2var flag = true;3
if(flag)
7 }else11}
12 sayhi();//
嚴格模式下會報錯。 referenceerror: sayhi is not defined
1//可以這樣做,使用函式表示式。
2var flag = true;3
varsayhi;4if
(flag)
8 }else12}
13 sayhi();
JS函式表示式
1.遞迴 function digui num else var d digui digui null d 3 改進 用arguments.callee num 1 代替 digui num 1 arguments.callee 是指向引數所在的函式的指標,code如下 function digui...
JS 函式表示式
引數1,引數2.call使用語法 函式名 方法名.call 物件,屬性1,屬性2.作用 可以改變this的指向 不同點 引數傳遞方式不同 bind是複製乙個方法或者函式 xw.say.call xh 注 math.random 返回介於 0 包含 1 不包含 之間的乙個隨機數 函式中幾個屬性 了解 ...
JS高階程式設計7 函式表示式
函式宣告提公升的概念 相對於函式表示式 176 不要這樣做 函式體內是宣告函式 因為函式相對於表示式是提公升的,會出現類似於函式過載的現象,zhezhong 語法是無效的 if condition else 可以這樣做 函式體內是函式表示式 var sayhi if condition else 遞...