回答編集履歴

1

意図した動作になるようなコードを追記

2018/07/09 11:23

投稿

maisumakun
maisumakun

スコア145183

test CHANGED
@@ -1 +1,41 @@
1
- JavaScriptでは、関数のローカル変数は**実行ごとに別なもの**となりますのて、parentFunctionを複数回呼べば、それぞれごとに別のfooが確保されます。
1
+ JavaScriptでは、関数のローカル変数は**実行ごとに別なもの**となりますのて、`parentFunction`を複数回呼べば、それぞれごとに別のfooが確保されます。
2
+
3
+
4
+
5
+ ----
6
+
7
+
8
+
9
+ ということで、Behemothさんが実現したい動作を行うには、`parentFunction`の外側にスコープが必要になります。
10
+
11
+
12
+
13
+ ```javascript
14
+
15
+ var parentFunction = (function(){
16
+
17
+ var foo = 'foo';
18
+
19
+ function nestedFunction(a) {
20
+
21
+ foo = foo + a;
22
+
23
+ console.log(foo);
24
+
25
+ }
26
+
27
+ // 外側では、これがparentFunctionに代入される
28
+
29
+ return function() {
30
+
31
+ return nestedFunction;
32
+
33
+ }
34
+
35
+ })();
36
+
37
+ ```
38
+
39
+
40
+
41
+ このように、`(function(){...})()`のような形で、その場で無名関数を作って実行する手法を、「即時呼び出し関数式」(即時関数、IIFE)といいます。