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

回答編集履歴

10

語彙テーブル削除

2019/06/21 17:13

投稿

退会済みユーザー
answer CHANGED
@@ -121,13 +121,5 @@
121
121
 
122
122
 
123
123
 
124
-
125
-
126
- | 日本語 | English |
127
- | ------ | ------- |
128
- | レキシカル環境 | lexical environment |
129
- |外側レキシカル環境 | outer lexical environment |
130
-
131
-
132
124
  # 追記
133
125
  高評価を頂けた方・冷静に適切なコメントを頂けた方、ありがとうございます。一部の荒らし者がコメントに混入してきた為、追記は削除しました(。•ㅅ•。)???? 通知でご迷惑をお掛けしていたら、すみません(。•ㅅ•。)????

9

字母 → レキシカル に修正

2019/06/21 17:13

投稿

退会済みユーザー
answer CHANGED
@@ -1,16 +1,16 @@
1
- クロージャの仕組みは、字母環境(lexical environment)が関わってきます。
1
+ クロージャの仕組みは、レキシカル環境(lexical environment)が関わってきます。
2
2
 
3
- そして、字母環境というのは、JavaScriptエンジンの内部処理を規定するための概念・用語であり、実際のコード(JavaScript)でアクセスする事は出来ません。
3
+ そして、レキシカル環境というのは、JavaScriptエンジンの内部処理を規定するための概念・用語であり、実際のコード(JavaScript)でアクセスする事は出来ません。
4
4
 
5
5
  - [8.1Lexical Environments -ECMAScript-262(2018)](https://www.ecma-international.org/ecma-262/9.0/index.html#sec-lexical-environments)
6
6
 
7
7
 
8
- > 字母環境は、....の定義に使用される仕様用のタイプです。
8
+ > レキシカル環境は、....の定義に使用される仕様用のタイプです。
9
9
  >
10
10
  > A Lexical Environment is a specification type used to define ...
11
11
 
12
12
  > ...
13
- > 字母環境と環境記録の値は、純粋に仕様の仕組みであり、ECMAScript実装の特定の現実物に対応する必要はありません。 ECMAScriptプログラムがそのような値(字母環境・環境記録)に直接アクセスしたり操作したりすることは不可能です。
13
+ > レキシカル環境と環境記録の値は、純粋に仕様の仕組みであり、ECMAScript実装の特定の現実物に対応する必要はありません。 ECMAScriptプログラムがそのような値(レキシカル環境・環境記録)に直接アクセスしたり操作したりすることは不可能です。
14
14
  > ...
15
15
  >
16
16
  > ...
@@ -18,12 +18,12 @@
18
18
  > ...
19
19
 
20
20
 
21
- # クロージャと字母環境の関係
21
+ # クロージャとレキシカル環境の関係
22
- ## 字母環境(lexical environment)
22
+ ## レキシカル環境(lexical environment)
23
23
 
24
- 字母環境とは、大まかにいうと、コード実行処理時に**形成される領域**と、それに伴う**変数の記録簿**の事です。また、両方を指す場合にも使われます。
24
+ レキシカル環境とは、大まかにいうと、コード実行処理時に**形成される領域**と、それに伴う**変数の記録簿**の事です。また、両方を指す場合にも使われます。
25
25
 
26
- コードが処理され始め、**グローバルが処理されている時**や**関数が呼び出された際**に、字母環境は生成されます。今JSエンジンが処理している部分を含む"領域"を**字母環境**といい、その外側を**外側字母環境**といいます。
26
+ コードが処理され始め、**グローバルが処理されている時**や**関数が呼び出された際**に、レキシカル環境は生成されます。今JSエンジンが処理している部分を含む"領域"を**レキシカル環境**といい、その外側を**外側レキシカル環境**といいます。
27
27
 
28
28
  例えば、以下のコードを見て下さい。
29
29
 
@@ -36,16 +36,16 @@
36
36
 
37
37
  ```
38
38
 
39
- 字母環境: `グローバル`
39
+ レキシカル環境: `グローバル`
40
- 外側字母環境: `null`
40
+ 外側レキシカル環境: `null`
41
41
 
42
42
  です。
43
43
 
44
- 字母環境には`goku`という識別子が記録されており、値`"Son Goku"`が対になって保存されています。
44
+ レキシカル環境には`goku`という識別子が記録されており、値`"Son Goku"`が対になって保存されています。
45
- グローバルの外側はないので、その様な場合、外側字母環境は`null`になります。
45
+ グローバルの外側はないので、その様な場合、外側レキシカル環境は`null`になります。
46
46
 
47
47
 
48
- また、先程述べたように、関数が呼び出された際にも、字母環境は生成されます。
48
+ また、先程述べたように、関数が呼び出された際にも、レキシカル環境は生成されます。
49
49
 
50
50
  ```js
51
51
  // グローバル
@@ -64,26 +64,26 @@
64
64
  greeting(); ←(処理点: 定義内処理中)
65
65
  ```
66
66
 
67
- 字母環境: `greeting関数内`
67
+ レキシカル環境: `greeting関数内`
68
- 外側字母環境: `グローバル`
68
+ 外側レキシカル環境: `グローバル`
69
69
 
70
70
 
71
- 処理がグローバル → 関数 へ移ると、関数内の新たな字母環境が生成され、グローバルを処理していた時に作成された字母環境は消滅します。
71
+ 処理がグローバル → 関数 へ移ると、関数内の新たなレキシカル環境が生成され、グローバルを処理していた時に作成されたレキシカル環境は消滅します。
72
72
 
73
73
 
74
74
 
75
75
  ## クロージャ(closure: 閉包)
76
- クロージャとは、関数が入れ子状で定義されており、且つ、コード実行時に内側の関数が返却された場合、その返却された関数の外側字母環境が維持される、というメカニズムです。
76
+ クロージャとは、関数が入れ子状で定義されており、且つ、コード実行時に内側の関数が返却された場合、その返却された関数の外側レキシカル環境が維持される、というメカニズムです。
77
77
 
78
78
  抽象的すぎて分かりにくいので、実際にコードを元に見ていきましょう。
79
79
 
80
80
  ```js
81
81
  function outer() {
82
- // `inner`の外側 字母環境
82
+ // `inner`の外側 レキシカル環境
83
83
 
84
84
  var cnt = 0;
85
85
  function inner() {
86
- // `inner`の字母環境
86
+ // `inner`のレキシカル環境
87
87
 
88
88
  return ++cnt;
89
89
  }
@@ -91,13 +91,13 @@
91
91
  }
92
92
  ```
93
93
 
94
- 関数`inner`の字母環境には、変数は宣言されていません。関数`inner`の外側字母環境には、変数`cnt`が宣言されています。
94
+ 関数`inner`のレキシカル環境には、変数は宣言されていません。関数`inner`の外側レキシカル環境には、変数`cnt`が宣言されています。
95
95
 
96
- 先程も言いましたが、関数が実行される際にこの字母環境は生成され、変数もそこに保存されます。そして、関数の処理が終われば、この両方の字母環境も消去されてしまいます。
96
+ 先程も言いましたが、関数が実行される際にこのレキシカル環境は生成され、変数もそこに保存されます。そして、関数の処理が終われば、この両方のレキシカル環境も消去されてしまいます。
97
97
 
98
- ところがです。関数を返却する関数の場合は(関数`outer`)、その返却された関数(関数`inner`)の外側字母環境は維持されたまま、関数にくっ付いた状態で返却されるのです。
98
+ ところがです。関数を返却する関数の場合は(関数`outer`)、その返却された関数(関数`inner`)の外側レキシカル環境は維持されたまま、関数にくっ付いた状態で返却されるのです。
99
99
 
100
- ですので、返却される予定の関数`inner`内で、その外側字母環境の変数`ctn`にアクセスするような処理を書いておくことにより、返却後、inner関数を実行することによって、維持された状態の外側字母環境(変数)にアクセスする事ができるのです。
100
+ ですので、返却される予定の関数`inner`内で、その外側レキシカル環境の変数`ctn`にアクセスするような処理を書いておくことにより、返却後、inner関数を実行することによって、維持された状態の外側レキシカル環境(変数)にアクセスする事ができるのです。
101
101
 
102
102
  もちろん、変数`ctn`は関数内で定義されているので、その外側からはアクセスできません。
103
103
 
@@ -125,8 +125,8 @@
125
125
 
126
126
  | 日本語 | English |
127
127
  | ------ | ------- |
128
- | 字母環境 | lexical environment |
128
+ | レキシカル環境 | lexical environment |
129
- |外側字母環境 | outer lexical environment |
129
+ |外側レキシカル環境 | outer lexical environment |
130
130
 
131
131
 
132
132
  # 追記

8

独自用語の訂正

2019/06/21 17:12

投稿

退会済みユーザー
answer CHANGED
@@ -23,12 +23,12 @@
23
23
 
24
24
  字母環境とは、大まかにいうと、コード実行処理時に**形成される領域**と、それに伴う**変数の記録簿**の事です。また、両方を指す場合にも使われます。
25
25
 
26
- コードが処理され始め、**全体的領域が処理されている時**や**関数が呼び出された際**に、字母環境は生成されます。今JSエンジンが処理している部分を含む"領域"を**字母環境**といい、その外側を**外側字母環境**といいます。
26
+ コードが処理され始め、**グローバルが処理されている時**や**関数が呼び出された際**に、字母環境は生成されます。今JSエンジンが処理している部分を含む"領域"を**字母環境**といい、その外側を**外側字母環境**といいます。
27
27
 
28
28
  例えば、以下のコードを見て下さい。
29
29
 
30
30
  ```js
31
- // 全体的領域
31
+ // グローバル
32
32
 
33
33
  ←(JSエンジン処理点)
34
34
 
@@ -36,25 +36,25 @@
36
36
 
37
37
  ```
38
38
 
39
- 字母環境: `全体的領域`
39
+ 字母環境: `グローバル`
40
40
  外側字母環境: `null`
41
41
 
42
42
  です。
43
43
 
44
44
  字母環境には`goku`という識別子が記録されており、値`"Son Goku"`が対になって保存されています。
45
- 全体的領域の外側はないので、その様な場合、外側字母環境は`null`になります。
45
+ グローバルの外側はないので、その様な場合、外側字母環境は`null`になります。
46
46
 
47
47
 
48
48
  また、先程述べたように、関数が呼び出された際にも、字母環境は生成されます。
49
49
 
50
50
  ```js
51
- // 全体的領域
51
+ // グローバル
52
52
 
53
53
 
54
54
  var goku = "Son Goku";
55
55
 
56
56
  function greeting(){
57
- // 部分的領域(ローカル)
57
+ // ローカル(ローカル)
58
58
  ←(処理点)
59
59
 
60
60
  console.log( "hi" )
@@ -65,10 +65,10 @@
65
65
  ```
66
66
 
67
67
  字母環境: `greeting関数内`
68
- 外側字母環境: `全体的領域`
68
+ 外側字母環境: `グローバル`
69
69
 
70
70
 
71
- 処理が全体的領域 → 関数 へ移ると、関数内の新たな字母環境が生成され、全体的領域を処理していた時に作成された字母環境は消滅します。
71
+ 処理がグローバル → 関数 へ移ると、関数内の新たな字母環境が生成され、グローバルを処理していた時に作成された字母環境は消滅します。
72
72
 
73
73
 
74
74
 
@@ -116,7 +116,7 @@
116
116
  これがクロージャの仕組みです。
117
117
 
118
118
 
119
- ### 術(メソッド)によるクロージャ
119
+ ### メソッドによるクロージャ
120
120
  今後、余裕があれば追記致します(。•ㅅ•。)
121
121
 
122
122
 
@@ -127,13 +127,6 @@
127
127
  | ------ | ------- |
128
128
  | 字母環境 | lexical environment |
129
129
  |外側字母環境 | outer lexical environment |
130
- |部分的領域(ローカル) | local |
131
- |全体的領域(グローバル) | global |
132
- |変数領域の鎖(スコープチェーン) | scope chain |
133
- |閉包(クロージャ) | closure |
134
- |術(メソッド) | method
135
- |性質(プロパティ) | property
136
- |物体(オブジェクト) | object
137
130
 
138
131
 
139
132
  # 追記

7

誤字訂正

2019/06/21 12:52

投稿

退会済みユーザー
answer CHANGED
@@ -137,4 +137,4 @@
137
137
 
138
138
 
139
139
  # 追記
140
- 高評価を頂けた方・冷静に適切なコメントを頂けた方、ありがとうございます。一部の荒らし者が混入コメントに混入してきた為、追記は削除しました(。•ㅅ•。)???? 通知でご迷惑をお掛けしていたら、すみません(。•ㅅ•。)????
140
+ 高評価を頂けた方・冷静に適切なコメントを頂けた方、ありがとうございます。一部の荒らし者がコメントに混入してきた為、追記は削除しました(。•ㅅ•。)???? 通知でご迷惑をお掛けしていたら、すみません(。•ㅅ•。)????

6

字句→字母 に戻し

2019/06/21 08:35

投稿

退会済みユーザー
answer CHANGED
@@ -1,16 +1,16 @@
1
- クロージャの仕組みは、字環境(lexical environment)が関わってきます。
1
+ クロージャの仕組みは、字環境(lexical environment)が関わってきます。
2
2
 
3
- そして、字環境というのは、JavaScriptエンジンの内部処理を規定するための概念・用語であり、実際のコード(JavaScript)でアクセスする事は出来ません。
3
+ そして、字環境というのは、JavaScriptエンジンの内部処理を規定するための概念・用語であり、実際のコード(JavaScript)でアクセスする事は出来ません。
4
4
 
5
5
  - [8.1Lexical Environments -ECMAScript-262(2018)](https://www.ecma-international.org/ecma-262/9.0/index.html#sec-lexical-environments)
6
6
 
7
7
 
8
- > 字環境は、....の定義に使用される仕様用のタイプです。
8
+ > 字環境は、....の定義に使用される仕様用のタイプです。
9
9
  >
10
10
  > A Lexical Environment is a specification type used to define ...
11
11
 
12
12
  > ...
13
- > 字環境と環境記録の値は、純粋に仕様の仕組みであり、ECMAScript実装の特定の現実物に対応する必要はありません。 ECMAScriptプログラムがそのような値(字環境・環境記録)に直接アクセスしたり操作したりすることは不可能です。
13
+ > 字環境と環境記録の値は、純粋に仕様の仕組みであり、ECMAScript実装の特定の現実物に対応する必要はありません。 ECMAScriptプログラムがそのような値(字環境・環境記録)に直接アクセスしたり操作したりすることは不可能です。
14
14
  > ...
15
15
  >
16
16
  > ...
@@ -18,12 +18,12 @@
18
18
  > ...
19
19
 
20
20
 
21
- # クロージャと字環境の関係
21
+ # クロージャと字環境の関係
22
- ## 字環境(lexical environment)
22
+ ## 字環境(lexical environment)
23
23
 
24
- 環境とは、大まかにいうと、コード実行処理時に**形成される領域**と、それに伴う**変数の記録簿**の事です。また、両方を指す場合にも使われます。
24
+ 環境とは、大まかにいうと、コード実行処理時に**形成される領域**と、それに伴う**変数の記録簿**の事です。また、両方を指す場合にも使われます。
25
25
 
26
- コードが処理され始め、**全体的領域が処理されている時**や**関数が呼び出された際**に、字環境は生成されます。今JSエンジンが処理している部分を含む"領域"を**字環境**といい、その外側を**外側字環境**といいます。
26
+ コードが処理され始め、**全体的領域が処理されている時**や**関数が呼び出された際**に、字環境は生成されます。今JSエンジンが処理している部分を含む"領域"を**字環境**といい、その外側を**外側字環境**といいます。
27
27
 
28
28
  例えば、以下のコードを見て下さい。
29
29
 
@@ -36,16 +36,16 @@
36
36
 
37
37
  ```
38
38
 
39
- 環境: `全体的領域`
39
+ 環境: `全体的領域`
40
- 外側字環境: `null`
40
+ 外側字環境: `null`
41
41
 
42
42
  です。
43
43
 
44
- 環境には`goku`という識別子が記録されており、値`"Son Goku"`が対になって保存されています。
44
+ 環境には`goku`という識別子が記録されており、値`"Son Goku"`が対になって保存されています。
45
- 全体的領域の外側はないので、その様な場合、外側字環境は`null`になります。
45
+ 全体的領域の外側はないので、その様な場合、外側字環境は`null`になります。
46
46
 
47
47
 
48
- また、先程述べたように、関数が呼び出された際にも、字環境は生成されます。
48
+ また、先程述べたように、関数が呼び出された際にも、字環境は生成されます。
49
49
 
50
50
  ```js
51
51
  // 全体的領域
@@ -64,26 +64,26 @@
64
64
  greeting(); ←(処理点: 定義内処理中)
65
65
  ```
66
66
 
67
- 環境: `greeting関数内`
67
+ 環境: `greeting関数内`
68
- 外側字環境: `全体的領域`
68
+ 外側字環境: `全体的領域`
69
69
 
70
70
 
71
- 処理が全体的領域 → 関数 へ移ると、関数内の新たな字環境が生成され、全体的領域を処理していた時に作成された字環境は消滅します。
71
+ 処理が全体的領域 → 関数 へ移ると、関数内の新たな字環境が生成され、全体的領域を処理していた時に作成された字環境は消滅します。
72
72
 
73
73
 
74
74
 
75
75
  ## クロージャ(closure: 閉包)
76
- クロージャとは、関数が入れ子状で定義されており、且つ、コード実行時に内側の関数が返却された場合、その返却された関数の外側字環境が維持される、というメカニズムです。
76
+ クロージャとは、関数が入れ子状で定義されており、且つ、コード実行時に内側の関数が返却された場合、その返却された関数の外側字環境が維持される、というメカニズムです。
77
77
 
78
78
  抽象的すぎて分かりにくいので、実際にコードを元に見ていきましょう。
79
79
 
80
80
  ```js
81
81
  function outer() {
82
- // `inner`の外側 字環境
82
+ // `inner`の外側 字環境
83
83
 
84
84
  var cnt = 0;
85
85
  function inner() {
86
- // `inner`の字環境
86
+ // `inner`の字環境
87
87
 
88
88
  return ++cnt;
89
89
  }
@@ -91,13 +91,13 @@
91
91
  }
92
92
  ```
93
93
 
94
- 関数`inner`の字環境には、変数は宣言されていません。関数`inner`の外側字環境には、変数`cnt`が宣言されています。
94
+ 関数`inner`の字環境には、変数は宣言されていません。関数`inner`の外側字環境には、変数`cnt`が宣言されています。
95
95
 
96
- 先程も言いましたが、関数が実行される際にこの字環境は生成され、変数もそこに保存されます。そして、関数の処理が終われば、この両方の字環境も消去されてしまいます。
96
+ 先程も言いましたが、関数が実行される際にこの字環境は生成され、変数もそこに保存されます。そして、関数の処理が終われば、この両方の字環境も消去されてしまいます。
97
97
 
98
- ところがです。関数を返却する関数の場合は(関数`outer`)、その返却された関数(関数`inner`)の外側字環境は維持されたまま、関数にくっ付いた状態で返却されるのです。
98
+ ところがです。関数を返却する関数の場合は(関数`outer`)、その返却された関数(関数`inner`)の外側字環境は維持されたまま、関数にくっ付いた状態で返却されるのです。
99
99
 
100
- ですので、返却される予定の関数`inner`内で、その外側字環境の変数`ctn`にアクセスするような処理を書いておくことにより、返却後、inner関数を実行することによって、維持された状態の外側字環境(変数)にアクセスする事ができるのです。
100
+ ですので、返却される予定の関数`inner`内で、その外側字環境の変数`ctn`にアクセスするような処理を書いておくことにより、返却後、inner関数を実行することによって、維持された状態の外側字環境(変数)にアクセスする事ができるのです。
101
101
 
102
102
  もちろん、変数`ctn`は関数内で定義されているので、その外側からはアクセスできません。
103
103
 
@@ -125,8 +125,8 @@
125
125
 
126
126
  | 日本語 | English |
127
127
  | ------ | ------- |
128
- | 字環境 | lexical environment |
128
+ | 字環境 | lexical environment |
129
- |外側字環境 | outer lexical environment |
129
+ |外側字環境 | outer lexical environment |
130
130
  |部分的領域(ローカル) | local |
131
131
  |全体的領域(グローバル) | global |
132
132
  |変数領域の鎖(スコープチェーン) | scope chain |

5

荒らしコメが多いため、追記削除

2019/06/21 08:32

投稿

退会済みユーザー
answer CHANGED
@@ -136,8 +136,5 @@
136
136
  |物体(オブジェクト) | object
137
137
 
138
138
 
139
- # 追記[19.06.21]
139
+ # 追記
140
- ## 低評価を押された方へのお願い????
141
- 以下の項目該当する場合、理由一言でもよろしいのコメントきたく存じ???? お手数すが宜しく願い致<(_ _)>????
140
+ 高評価を頂けた方・冷静適切なコメント頂けた方、ありがとうござます。一部荒らし者が混入コメントに混入してきた為、追記は削除しした(。•ㅅ•。)???? 通知ご迷惑を掛けていたら、みません(。•ㅅ•。)????
142
-
143
- - 回答に間違いが含まれる

4

変値→変数 訂正

2019/06/21 05:44

投稿

退会済みユーザー
answer CHANGED
@@ -21,7 +21,7 @@
21
21
  # クロージャと字句環境の関係
22
22
  ## 字句環境(lexical environment)
23
23
 
24
- 字句環境とは、大まかにいうと、コード実行処理時に**形成される領域**と、それに伴う**変の記録簿**の事です。また、両方を指す場合にも使われます。
24
+ 字句環境とは、大まかにいうと、コード実行処理時に**形成される領域**と、それに伴う**変の記録簿**の事です。また、両方を指す場合にも使われます。
25
25
 
26
26
  コードが処理され始め、**全体的領域が処理されている時**や**関数が呼び出された際**に、字句環境は生成されます。今JSエンジンが処理している部分を含む"領域"を**字句環境**といい、その外側を**外側字句環境**といいます。
27
27
 
@@ -129,7 +129,7 @@
129
129
  |外側字句環境 | outer lexical environment |
130
130
  |部分的領域(ローカル) | local |
131
131
  |全体的領域(グローバル) | global |
132
- |変領域の鎖(スコープチェーン) | scope chain |
132
+ |変領域の鎖(スコープチェーン) | scope chain |
133
133
  |閉包(クロージャ) | closure |
134
134
  |術(メソッド) | method
135
135
  |性質(プロパティ) | property

3

お願い追記

2019/06/21 04:19

投稿

退会済みユーザー
answer CHANGED
@@ -133,4 +133,11 @@
133
133
  |閉包(クロージャ) | closure |
134
134
  |術(メソッド) | method
135
135
  |性質(プロパティ) | property
136
- |物体(オブジェクト) | object
136
+ |物体(オブジェクト) | object
137
+
138
+
139
+ # 追記[19.06.21]
140
+ ## 低評価を押された方へのお願い????
141
+ 以下の項目に該当する場合、理由を一言でもよろしいのでコメント頂きたく存じます???? お手数ですが宜しくお願い致します<(_ _)>????
142
+
143
+ - 回答に間違いが含まれる

2

包囲→閉包

2019/06/21 04:18

投稿

退会済みユーザー
answer CHANGED
@@ -72,7 +72,7 @@
72
72
 
73
73
 
74
74
 
75
- ## クロージャ(closure: 包)
75
+ ## クロージャ(closure: 包)
76
76
  クロージャとは、関数が入れ子状で定義されており、且つ、コード実行時に内側の関数が返却された場合、その返却された関数の外側字句環境が維持される、というメカニズムです。
77
77
 
78
78
  抽象的すぎて分かりにくいので、実際にコードを元に見ていきましょう。
@@ -130,7 +130,7 @@
130
130
  |部分的領域(ローカル) | local |
131
131
  |全体的領域(グローバル) | global |
132
132
  |変値領域の鎖(スコープチェーン) | scope chain |
133
- |包(クロージャ) | closure |
133
+ |包(クロージャ) | closure |
134
134
  |術(メソッド) | method
135
135
  |性質(プロパティ) | property
136
136
  |物体(オブジェクト) | object

1

誤字修正

2019/06/21 04:11

投稿

退会済みユーザー
answer CHANGED
@@ -68,7 +68,7 @@
68
68
  外側字句環境: `全体的領域`
69
69
 
70
70
 
71
- 処理が全体的領域 → 関数 へ移ると、関数内の新たな字句環境が生成され、全体的領域を実装していた時に作成された字句環境は消滅します。
71
+ 処理が全体的領域 → 関数 へ移ると、関数内の新たな字句環境が生成され、全体的領域を処理していた時に作成された字句環境は消滅します。
72
72
 
73
73
 
74
74