回答編集履歴
2
メモリ開放云々の説明を修正
test
CHANGED
@@ -22,7 +22,9 @@
|
|
22
22
|
|
23
23
|
**クロージャがメモリ開放しないのは仕様**
|
24
24
|
|
25
|
-
そもそも論としてクロージャがメモリを手放さないのは内包関数がローカル変数にスコープを持っているからであり、
|
25
|
+
そもそも論としてクロージャがメモリを手放さないのは内包関数がローカル変数にスコープを持っているからであり、スコープを持つ変数をガベージコレクションで回収できない事に起因します。
|
26
|
+
|
27
|
+
つまり、仕様であってメモリリークではありません。
|
26
28
|
|
27
29
|
|
28
30
|
|
1
markdown記法の調整
test
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
|
4
4
|
|
5
|
-
グローバル変数を使うと内包関数が参照する変数 `x`
|
5
|
+
グローバル変数を使うと内包関数が参照する「グローバル変数 `x`」が共有されてしまいます。
|
6
6
|
|
7
7
|
クロージャの優位性を失うことになると思うのですが、それはクロージャにする意味があるのでしょうか。
|
8
8
|
|
@@ -14,7 +14,7 @@
|
|
14
14
|
|
15
15
|
**DontDelete 属性が存在するのは ES3 まで**
|
16
16
|
|
17
|
-
|
17
|
+
`DontDelete` 属性が存在するのは ES3 までであり、ES5 では削除されています。
|
18
18
|
|
19
19
|
- [変数宣言のvarアリとナシの違いや使い分け(14790)|teratail](https://teratail.com/questions/14790#r23126)
|
20
20
|
|
@@ -23,6 +23,10 @@
|
|
23
23
|
**クロージャがメモリ開放しないのは仕様**
|
24
24
|
|
25
25
|
そもそも論としてクロージャがメモリを手放さないのは内包関数がローカル変数にスコープを持っているからであり、仕様です(メモリリークではありません)。
|
26
|
+
|
27
|
+
|
28
|
+
|
29
|
+
**ガベージコレクション**
|
26
30
|
|
27
31
|
メモリ開放が必要なら[ガベージコレクション](https://ja.wikipedia.org/wiki/%E3%82%AC%E3%83%99%E3%83%BC%E3%82%B8%E3%82%B3%E3%83%AC%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3)によって開放されるようにスコープを調節してください。
|
28
32
|
|