我亲眼目睹了这种行为,后来发现了匿名函数(最著名的是新箭头函数)的“名称推断”概念,但是我无法找到该行为的定义位置。供参考:
// 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的一个鲜为人知但有用的功能,而实际上几乎没有文档。
有人可以为此提供规范参考吗?