在ECMAScript 6中,所有函数都有适当的名称:
console.log((function fn() {}).name); // 'fn'
console.log((new Function()).name); // 'anonymous'
但是在匿名函数的情况下:
console.log((function () {}).name); // (empty string)
你能解释一下,为什么在第三个例子的情况下我们无法获得输出'anonymous'
?
答案 0 :(得分:3)
ECMA-262明确声明了使用Function构造函数创建的for函数,该函数构造函数的名称设置为" anonymous",请参阅Runtime Semantics: CreateDynamicFunction(constructor, newTarget, kind, args)步骤29。
但是,对于使用没有可选名称的函数表达式创建的函数(或以其他方式绑定名称),情况并非如此,在这种情况下,名称必须保留为空字符串。
游戏机尝试提供帮助,但在这种情况下,改变""到#34;匿名"可能会产生误导。