0
之間有什麼區別:命名函數的不同方式?
var name = function() { //stuff to do };
{name : function() { //stuff to do } };
function name() { //stuff to do };
之間有什麼區別:命名函數的不同方式?
var name = function() { //stuff to do };
{name : function() { //stuff to do } };
function name() { //stuff to do };
正如"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屬性也用於從其自身內部遞歸地調用相同的函數 。如果你對這兩種情況不感興趣,那麼一個未命名的函數表達式將會更簡單,並且不會變得冗長。
對函數的聲明和喜歡 函數表達式的原因的情況是表達亮點,其功能 就像所有其他對象的對象,而不是一些特殊的語言 結構。
是'javascript'嗎? – megawac
http://www.w3schools.com/js/js_functions.asp – Mike