1. 程式人生 > >函式表示式使用的注意事項

函式表示式使用的注意事項

函式宣告提升

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!");
    };
}