在Javascript中有什么区别:
var name = function() { //stuff to do };
{name : function() { //stuff to do } };
function name() { //stuff to do };
在Javascript中有什么区别:
var name = function() { //stuff to do };
{name : function() { //stuff to do } };
function name() { //stuff to do };
正如 Stoyan Stefanov 在“JavaScript 模式”中所写:
在函数声明和命名函数表达式中,定义了 name 属性。在匿名函数表达式中,取决于实现;它可以是未定义的 (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 属性还用于从自身内部递归调用相同的函数。如果您对这两种情况不感兴趣,那么一个未命名的函数表达式会更容易且不那么冗长。
反对函数声明的情况和更喜欢函数表达式的原因是表达式强调函数是像所有其他对象一样的对象,而不是某种特殊的语言结构。