在 ECMAScript 6 中,所有函数都有适当的名称:
console.log((function fn() {}).name); // 'fn'
console.log((new Function()).name); // 'anonymous'
但是如果是匿名函数:
console.log((function () {}).name); // (empty string)
您能否解释一下,为什么在第三个示例中我们无法获得输出'anonymous'
?
最佳答案
ECMA-262 明确声明使用 Function 构造函数创建的函数的名称设置为“匿名”,请参阅 Runtime Semantics: CreateDynamicFunction(constructor, newTarget, kind, args)步骤 29。
但是,使用没有可选名称的函数表达式创建的函数(或以其他方式绑定(bind)名称)的情况并非如此,在这种情况下,名称必须保留为空字符串。
控制台试图提供帮助,但在这种情况下,将“”更改为“匿名”可能会产生误导。
关于javascript - ES6 中匿名函数的函数名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41798680/