teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

右と左を間違える致命的なミス><

2016/12/24 13:43

投稿

raccy
raccy

スコア21784

answer CHANGED
@@ -66,7 +66,7 @@
66
66
  * クラス式: `class` `{` __ClassBody__ `}`
67
67
  * 継承ありクラス式: `class` `extends` __LeftHandSideExpression__ `{` __ClassBody__ `}`
68
68
 
69
- IsAnonymousFunctionDefinitionの対象となるのは代入の辺に現れることができる**式**であるため、**宣言は操作の対象として含まれていません。**つまり、IsAnonymousFunctionDefinitionと宣言は全く無関係であり、対象となっていないため、検査自体ができません。
69
+ IsAnonymousFunctionDefinitionの対象となるのは代入の辺に現れることができる**式**であるため、**宣言は操作の対象として含まれていません。**つまり、IsAnonymousFunctionDefinitionと宣言は全く無関係であり、対象となっていないため、検査自体ができません。
70
70
 
71
71
  さらに、このIsAnonymousFunctionDefinitionが具体的にどう使われているかというと、関数が変数に代入されたときに関数の`name`プロパティに変数名を入れる必要があるかどうかの判定に使われます([12.15.4 Runtime Semantics: Evaluation](https://www.ecma-international.org/ecma-262/7.0/#sec-assignment-operators-runtime-semantics-evaluation))。つまり、IsAnonymousFunctionDefinitionがtrueであっても、最終的に、関数の`name`プロパティが設定されている場合があると言うことです。
72
72
 

2

少し文脈を訂正

2016/12/24 13:43

投稿

raccy
raccy

スコア21784

answer CHANGED
@@ -75,7 +75,7 @@
75
75
  以上のことから、それぞれの文脈と矛盾無く用語の定義を考えて、私はこのように解釈しました。
76
76
 
77
77
  * JavaScriptにおける無名関数(匿名関数、nameless function、anonymous function)とは、自身に`name`プロパティを持たない関数、ジェネレーター、アロー関数、クラスである。**関数宣言であるとか関数式であるとか関係無い。**
78
- * JavaScriptにおける無名関数**定義**(匿名関数定義、nameless function definition、anonymous function definition)とは、名前が指定されていない関数宣言、ジェネレーター宣言、クラス宣言、関数式、ジェネレーター式、クラス式、アロー関数(定義)である。**その後の代入により生成されオブジェクトが無名関数では無くなる場合があり得る。**
78
+ * JavaScriptにおける無名関数**定義**(匿名関数定義、nameless function definition、anonymous function definition)とは、名前が指定されていない関数宣言、ジェネレーター宣言、クラス宣言、関数式、ジェネレーター式、クラス式、アロー関数(定義)である。**その後の変数の代入により生成された関数オブジェクトが無名関数では無くなる場合があり得る。**
79
79
 
80
80
  つまり、ECMAScirpt 2016においては、
81
81
 

1

誤字の修正

2016/12/24 09:51

投稿

raccy
raccy

スコア21784

answer CHANGED
@@ -11,7 +11,7 @@
11
11
 
12
12
  ---
13
13
 
14
- はじめに「無名関数」の定義をはっきりさせなければなりません。原則、根拠は仕様書から行います。仕様書に明記されていない事柄のみ、計算科学およびプログラミング言語での監修に基づく判断とします。
14
+ はじめに「無名関数」の定義をはっきりさせなければなりません。原則、根拠は仕様書から行います。仕様書に明記されていない事柄のみ、計算科学およびプログラミング言語での慣習に基づく判断とします。
15
15
 
16
16
  ####【その1】英語表記との同定
17
17
  まず、"nameless function"という言葉は一度も仕様書には出てきません。ただ、慣習として、無名関数=匿名関数(anonymous function)とする場合が多い([Wikipeida[ja]:無名関数](https://ja.wikipedia.org/wiki/%E7%84%A1%E5%90%8D%E9%96%A2%E6%95%B0))ため、仕様書内の"anonymous function"の事を示すとします。