【发布时间】:2020-03-17 20:43:50
【问题描述】:
我亲眼目睹了这种行为,后来发现了匿名函数(最显着的是新的箭头函数)的“名称推断”概念,但我无法找到这种行为的定义位置。供参考:
// Arrow functions are inherently anonymous so this shouldn't work
const foo = () => {};
console.log(foo.name); // outputs "foo"
const bar = function() {};
console.log(bar.name); // outputs "bar"
// vs
console.log((() => {}).name) // outputs ""
console.log((function() {}).name) // outputs ""
我在MDN 上找到的最接近的东西将其归因于“ECMAScript 2015 中的新功能”。我试图搜索ES2015 spec,但没有成功。这似乎是现代 ES 的一个很大程度上未知但有用的功能,实际上几乎没有文档存在。
谁能为此提供规范规范的参考?
【问题讨论】:
-
ecma-international.org/ecma-262/6.0/… 在 12.14.4.1.e.iii 等之下。只需在该规范中搜索
SetFunctionName,您一定会找到很多。