質問編集履歴

3

Version 65.0.3325.181 (Official Build) (64-bit)

2018/04/15 07:53

投稿

murabito
murabito

スコア108

test CHANGED
File without changes
test CHANGED
@@ -56,6 +56,8 @@
56
56
 
57
57
 
58
58
 
59
+ **Google Chrome Version 65.0.3325.181 (Official Build) (64-bit)で確認**
60
+
59
61
  ```ここに言語を入力
60
62
 
61
63
  function outer(lang) {

2

解決後の補足

2018/04/15 07:53

投稿

murabito
murabito

スコア108

test CHANGED
File without changes
test CHANGED
@@ -47,3 +47,65 @@
47
47
 
48
48
 
49
49
  変数`b`は見当たらないので、そういうことなのかと思いました。
50
+
51
+
52
+
53
+
54
+
55
+ # 解決後の報告
56
+
57
+
58
+
59
+ ```ここに言語を入力
60
+
61
+ function outer(lang) {
62
+
63
+
64
+
65
+ var a = 1;
66
+
67
+ var b = [{}, {}, {}, {}, {}];
68
+
69
+
70
+
71
+ if (lang === 'jp') {
72
+
73
+ return function inner() {
74
+
75
+ console.log(a);
76
+
77
+ console.log(b);
78
+
79
+ a++;
80
+
81
+ }
82
+
83
+ } else {
84
+
85
+ return function inner() {
86
+
87
+ console.log(a);
88
+
89
+ a++;
90
+
91
+ }
92
+
93
+ }
94
+
95
+
96
+
97
+ }
98
+
99
+
100
+
101
+ const fn = outer('en');
102
+
103
+ ```
104
+
105
+
106
+
107
+ このようなコードで試したところ、以下のように変数bを参照しない関数を返したとしても、変数aと変数bへの参照を持っていることを確認致しました。
108
+
109
+
110
+
111
+ ![イメージ説明](1732b117488a478d14e446a2baf0695b.png)

1

キャプチャーをついき

2018/04/14 05:14

投稿

murabito
murabito

スコア108

test CHANGED
File without changes
test CHANGED
@@ -35,3 +35,15 @@
35
35
  ```
36
36
 
37
37
  このコードの場合、`outer()`を呼んで返される`inner`関数は外の変数aは参照し続けるけれども、変数bは参照をしていないので、変数bに代入されていた複数のオブジェクトを持つ配列に割り当てられたメモリは自動的に解放されるという理解であっていますでしょうか?
38
+
39
+
40
+
41
+ # キャプチャー
42
+
43
+
44
+
45
+ ![イメージ説明](134dd07b0e281d7afa12f4a3ee92eb80.png)
46
+
47
+
48
+
49
+ 変数`b`は見当たらないので、そういうことなのかと思いました。