ES2015函数名称推断在哪里定义?

问题描述 投票:0回答:2

我已经看到了实际的行为,后来发现了匿名函数(最著名的是新箭头函数)的“名称推断”概念,但是我无法找到定义此行为的位置。供参考:

// 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的一个很大程度上未知但有用的功能,实际上几乎没有文档。

任何人都可以为此提供规范参考吗?

javascript specifications
2个回答
0
投票
[函数的.name属性是在SetFunctionName procedure中创建的,通常在规范中的各个地方都会调用此name,通常当您分配变量或定义属性并且右侧是匿名函数表达式时。

-1
投票

功能对象下,您会找到name属性。

使用SetFunctionName抽象操作分配上下文名称,并且在规范中的26个位置调用该名称:

1]在对象文字的SetFunctionName内部(如果property declarations是匿名函数,{ a: b }b的名称设置为a)。

2)

© www.soinside.com 2019 - 2024. All rights reserved.