函式表示式使用的注意事項
阿新 • • 發佈:2018-12-18
函式宣告提升
sayHi();
function satHi() {
alert("Hi");
}
//這個是沒問題的,函式在程式碼執行之前會先讀取函式宣告。但是當使用函式表示式的時候下面的例子會丟擲錯誤。
sayHi(); //錯誤;函式不存在
var sayHi = function() {
alert("Hi");
}
函式宣告與表示式之間的區別。
//不要這樣做 if(condition){ function sayHi(){ alert("Hi"); } } else { function sayHi(){ alert("Yo"); } } //表面上看的程式碼表示conditon為true時,使用一個sayHi()的定義;否則使用另一個定義。實際上,這在ECMAScript中屬於無效語法,JavaScript引擎會嘗試修正錯誤,將其轉化成合理的狀態。但問題是瀏覽器修正錯誤的做法是不一致的。大多數瀏覽器會忽略condition,返回第二個申明。 Firefox會在condition為true是返回第一個宣告。所以這種寫法不應該出現在你的程式碼中。 so,在這裡我們可以使用函式表示式,就不會出現什麼問題了。 //可以這樣做 var sayHi; if(condition){ sayHi = function(){ alert("Hi!"); }; } else { sayHi = function(){ alert("Yo!"); }; }