2013-10-31 57 views
0

之間有什麼區別:命名函數的不同方式?

var name = function() { //stuff to do };

{name : function() { //stuff to do } };

function name() { //stuff to do };

+0

是'javascript'嗎? – megawac

+0

http://www.w3schools.com/js/js_functions.asp – Mike

回答

3

正如"JavaScript Patterns"寫的斯托揚斯特凡:

在函數的聲明和命名的函數表達式中,名字 親perty被定義。在匿名函數表達式中,它依賴於 的實現;它可能是未定義的(IE)或用 空字符串(火狐,WebKit的)中所定義:調試螢火蟲代碼或其它 調試器時

function foo() {} // declaration 
var bar = function() {}; // expression 
var baz = function baz() {}; // named expression 

foo.name; // "foo" 
bar.name; // "" 
baz.name; // "baz" 

name屬性是有用的。當調試器需要向您顯示函數中的錯誤時,它可以檢查是否存在name屬性,並將其用作 指示器。 name屬性也用於從其自身內部遞歸地調用相同的函數 。如果你對這兩種情況不感興趣,那麼一個未命名的函數表達式將會更簡單,並且不會變得冗長。

對函數的聲明和喜歡 函數表達式的原因的情況是表達亮點,其功能 就像所有其他對象的對象,而不是一些特殊的語言 結構。

相關問題