1

我正在使用 Google Chrome 52 64 位版本。我发现如果我使用匿名函数表达式 ex。

//  Anonymous function expression 
var expressionFunc = function(){
    return true;
};

该变量expressionFunc将保存分配的匿名函数,但它也expressionFunc为该函数添加了一个名称属性。因此,如果我 expressionFunc.name在控制台中这样做,它会给我expressionFunc.

据我所知,这个匿名函数表达式应该保持匿名,并且变量引用的函数不应该在函数的 name 属性中包含变量名。

为什么 chrome 将 name 属性分配给匿名函数?

4

1 回答 1

0

这一页:

https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Function/name

这么说

实现 ES6 函数的浏览器可以从其句法位置推断出匿名函数的名称。例如:

var f = function() {};
console.log(f.name); // "f"

该页面上没有特别说明。

这一页

http://www.2ality.com/2015/09/function-names-es6.html

这么说

关于名称,箭头函数类似于匿名函数表达式:

     const func = () => {};
     console.log(func.name); // func

从现在开始,每当您看到匿名函数表达式时,您都可以假设箭头函数的工作方式相同。

https://stackoverflow.com/a/37488652/1048572(@bergi引用)的答案非常全面,并指向规范中的源代码。

于 2016-09-01T11:38:17.327 回答