ECMAScript 6以降、ほとんどの関数オブジェクトには、という名前のプロパティが定義されています()。代入式の名前プロパティの定義
ここで、匿名関数式が変数に割り当てられている場合、またはオブジェクト初期化子内のプロパティ定義の一部である場合、変数の識別子またはプロパティの名前は、の名前の値になります。関数オブジェクト
次の例のように、左側のメンバーの表現への割り当てがない理由、私はこの動作の文書化セマンティックに関する仕様を理解するために問題はありませんが、私は実際に見ることができないconst a = function() {};
console.log(a.name); // a
const object = {
b : function() {}
};
console.log(object.b.name); // b
その機能のプロパティに影響します。
const object = {};
object.c = function() {};
console.log(object.c.name); //
部材式の一部として、(とする必要がありますか?)は名プロパティの値として使用することができるindentifierが明らかに存在します。たとえオブジェクト名の中で計算されたプロパティ名を使用しても、という名前の無名関数のプロパティーが定義されることはないため、プロパティ名は大括弧で囲まれた式であっても問題ありません。
観察された動作が仕様に準拠していることを誰かが確認できる場合は、この構文に適用される特定のセマンティクスを簡単に説明してください。
はい、これは仕様の変わった部分です。正しく読んだことがあります。 https://esdiscuss.org/topic/name-anonymous-functions-on-property-assignments – Bergi
こんにちはベルギー。リンク(*とリンク*のリンク)をありがとう。今私は 'IsIdentifierRef'を誤解していないことが分かります。私はちょうどそのことについて確信が持たれておらず、いくつかの確認を求めました。なぜなら、この議論の中で言及したように、このことから生じる行動は私にとってまったく矛盾するように思えたからです。残念ながら、ES 2017は[this](https://tc39.github.io/ecma262/#sec-static-semantics-static-semantics-isidentifierref)についても何も変えていないようです。 :-( – SickBoy