1

What is the difference between these?

var myFunc = function() {
  // ...
};

vs.

var myFunc = function myFunc() {
  // ...
};

In the 2nd example, arguments.callee.caller.name works, but not in the first one. Is there anything wrong with the 2nd syntax?

4

3 回答 3

7

第二个有名字,而第一个没有。函数是具有属性的对象name。如果该函数是匿名的,则它没有名称。

var a = function(){}; // anonymous function expression
a.name; //= empty

var a = function foo(){}; // named function expression
a.name; //= foo
于 2013-07-01T03:07:02.873 回答
2

in a function 文字是可选的name,如果在第一种情况下省略,则表明该函数是匿名的。

这是来自Douglas Crockford的JavaScript: The Good Parts

函数文字有四个部分。第一部分是保留字功能。可选的第二部分是函数的名称。该函数可以使用其名称递归调用自身。调试器和开发工具也可以使用该名称来识别功能。如果一个函数没有名字,如前面的例子所示,它被称为是匿名的。

于 2013-07-01T03:30:35.493 回答
1

第一个函数没有名称。

将函数分配给变量不会给函数命名。

于 2013-07-01T03:04:32.903 回答