【问题标题】:Function names for anonymous functions in ES6ES6 中匿名函数的函数名
【发布时间】:2017-01-23 03:01:15
【问题描述】:

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

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

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

但在匿名函数的情况下:

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

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

【问题讨论】:

  • 它在the spec - 如果您在规范中搜索“CreateDynamicFunction”,您会看到name 何时分配给anonymous
  • 并且匿名函数继承自原型,其名称为空字符串。 link

标签: javascript function ecmascript-6


【解决方案1】:

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

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

控制台试图提供帮助,但在这种情况下,将“”更改为“匿名”可能会产生误导。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-20
    • 2014-09-11
    • 1970-01-01
    • 2011-12-29
    • 1970-01-01
    相关资源
    最近更新 更多