Javascript:var myFunc = function()与var myFunc = function myFunc()

时间:2013-07-01 03:01:26

标签: javascript

这些之间有什么区别?

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

VS

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

在第二个示例中,arguments.callee.caller.name有效,但不在第一个中。第二种语法有什么问题吗?

3 个答案:

答案 0 :(得分:7)

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

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

var a = function foo(){}; // named function expression
a.name; //= foo

答案 1 :(得分:2)

函数文字中的name是可选的,如果省略,则在第一种情况下显示该函数被称为匿名

这是JavaScript: The Good Parts by Douglas Crockford

  

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

答案 2 :(得分:1)

第一个功能没有名称。

为变量赋值不会为函数命名。