在Javascript中有什么区别:
var name = function() { //stuff to do };
{name : function() { //stuff to do } };
function name() { //stuff to do };
答案 0 :(得分:3)
由Stoyan Stefanov在"JavaScript Patterns"写的:
在函数声明和命名函数表达式中,名称 属性是定义的。在匿名函数表达式中,它取决于 实施;它可以是未定义的(IE)或用 空字符串(Firefox,WebKit):
function foo() {} // declaration var bar = function () {}; // expression var baz = function baz() {}; // named expression foo.name; // "foo" bar.name; // "" baz.name; // "baz"
在Firebug或其他程序中调试代码时,name属性非常有用 调试器。当调试器需要在函数中显示错误时, 它可以检查name属性的存在并将其用作 指示符。 name属性也用于调用相同的函数 从内部递归。如果你对这些不感兴趣 两种情况,然后一个未命名的函数表达式将更容易和 不那么冗长。
针对函数声明的情况和偏好的原因 函数表达式是表达式突出显示的函数 是所有其他对象的对象,而不是一些特殊的语言 构造