在Javascript中,以下内容有什么区别:
var name = function() { //stuff to do };
{name : function() { //stuff to do } };
function name() { //stuff to do };
发布于 2013-11-01 00:29:34
由Stoyan Stefanov在"JavaScript Patterns"中编写
在函数声明和命名函数表达式中,定义了name属性。在匿名函数表达式中,它取决于实现;它可以是未定义的(IE)或使用空字符串定义的(Firefox,WebKit):
function foo() {} //声明var bar = function () {};// expression var baz = function baz() {};//命名表达式foo.name;// "foo“bar.name;// "”baz.name;// "baz“
在Firebug或其他调试器中调试代码时,name属性很有用。当调试器需要显示函数中的错误时,它可以检查是否存在name属性,并将其用作指示器。name属性还用于从其内部递归调用同一函数。如果您对这两种情况不感兴趣,那么一个未命名的函数表达式将会更容易,并且不那么冗长。
反对函数声明的理由和首选函数表达式的原因是,表达式强调函数是对象,就像所有其他对象一样,而不是某种特殊的语言构造。
https://stackoverflow.com/questions/19709541
复制相似问题