2010-01-27 64 views
1
function foo(bar) { 
    // ... 
} 

「函數foo(巴){}」 與 「富=函數(巴){}」

foo = function(bar) { 
    // ... 
}; 

什麼爲一比其它的好處?我在後者看到的主要好處是不會遇到錯誤,並且已經定義了函數名稱。但是,可能還有其他不明顯的優點或缺點。他們是什麼(如果有的話)?

回答

1

這已經被問了幾次,this似乎是最好的之一。

1

還有其他的東西,你可以用比它賦值給一個變量之外的匿名函數做。你可以立即執行它:

(function() { ... })(); 

這有時用於爲代碼創建一個範圍。在範圍內聲明的東西是當地的微博,你可以將結果返回到外部代碼:

var a = (function() { 

    var answer = 42; 

    function display() { window.alert(answer); }; 

    return display; 

})(); 

現在變量a包含顯示變量answer的值的函數,但是變量answer是本地的到的範圍:

a(); // displays the value 
display(); // not available 
window.alert(answer); // not available 

此圖案例如用於爲jQuery的創建的插件:

(function($) { 

    $.fn.blackText = function() { 
    return this.css('color', '#000'); 
    }; 

}(jQuery); 

jQuery對象發送到範圍爲$參數,這樣,在範圍代碼可以使用,即使它已被關閉的$快捷方式(使用noConflict)的範圍之外。