兩者都不推薦使用,兩者都可以使用。這裏的區別在於一個是命名函數(function f()
),另一個是等於函數的變量(var f = function()
)。
設置變量等於函數時必須小心。這將工作:
var f = function(n) { console.log(n); };
f(3); // logs 3
但是,這將打破,因爲變量在調用它之後定義。
f(3); // what is f? breaks.
var f = function(n) { console.log(n); };
但正常的功能正常工作。
function abc(n) { console.log(n); }
abc(3); // logs 3
xyz(5); // logs 5
function xyz(n) { console.log(n); }
這是因爲在執行之前分析了代碼,並且可以調用所有函數。但設置一個var等於一個函數就像設置一個var到其他任何東西。什麼時候發生的順序很重要。
現在對於一些比較混亂的東西...
也有「自執行」匿名函數。他們有各種各樣的名字。最常見的做法如下:
(function() {
// code in here will execute right away
// since the() at the end executes this (function(){})
})();
還有一個可以說是更好的版本。
!function() {
// again, the tailing() will execute this
}();
查看this Stack Overflow post瞭解更多有關匿名功能的信息。
下面是對您的問題的答案:http://stackoverflow.com/a/1013387/236135這是用正確的術語問的問題http://stackoverflow.com/questions/1013385/what-is-the函數表達式與聲明中的函數表達式聲明 – 2012-02-24 00:46:52