ES6中匿名函数的函数名称

时间:2017-01-23 03:01:16

标签: javascript function ecmascript-6

在ECMAScript 6中,所有函数都有适当的名称:

console.log((function fn() {}).name); // 'fn'

console.log((new Function()).name); // 'anonymous'

但是在匿名函数的情况下:

console.log((function () {}).name); // (empty string)

你能解释一下,为什么在第三个例子的情况下我们无法获得输出'anonymous'

1 个答案:

答案 0 :(得分:3)

ECMA-262明确声明了使用Function构造函数创建的for函数,该函数构造函数的名称设置为" anonymous",请参阅Runtime Semantics: CreateDynamicFunction(constructor, newTarget, kind, args)步骤29。

但是,对于使用没有可选名称的函数表达式创建的函数(或以其他方式绑定名称),情况并非如此,在这种情况下,名称必须保留为空字符串。

游戏机尝试提供帮助,但在这种情况下,改变""到#34;匿名"可能会产生误导。