Javascript: var myFunc = function() vs. var myFunc = functio

Javascript: var myFunc = function() vs. var myFunc = function myFunc()

本文关键字:myFunc var vs functio Javascript function      更新时间:2023-09-26

它们之间有什么区别?

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

与。

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

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

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

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

函数文字中的name是可选的,如果像第一种情况一样被省略,则函数被称为匿名

这来自Douglas Crockford的JavaScript:The Good Parts

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

第一个函数没有名称。

将函数赋给变量并不会为函数命名。