回答編集履歴
2
修正
test
CHANGED
@@ -21,3 +21,7 @@
|
|
21
21
|
fugaWriter(some_func)
|
22
22
|
```
|
23
23
|
クロージャ、というキーワードで調べてみると良いと思います。
|
24
|
+
|
25
|
+
(追記)
|
26
|
+
※分割せずに連続で書くと`hoge("hoge")(sum_func)`ですが、これが何故かは処理の内容次第ですが、
|
27
|
+
単にクロージャ関数を連続で呼び出して短く書いただけ、で良いと思います。
|
1
test
CHANGED
@@ -10,7 +10,7 @@
|
|
10
10
|
|
11
11
|
これはクロージャという機能で、関数内で関数を定義(高階関数と言います)して、子が親のローカル変数を参照していて、さらに親関数から子関数をreturnして外に出した場合、親が終了した後も子が親のローカル変数を使うので、子関数のクロージャという領域に変数をコピーするという動きが、内部で行われます(レキシカルスコープとも言います)。
|
12
12
|
|
13
|
-
ここでは`str`が、`arg => args(str)`関数のクロージャ領域にコピーされ、returnされます。これにより、hoge関数に渡した文字列を保持した
|
13
|
+
ここでは`str`が、`arg => args(str)`関数のクロージャ領域にコピーされ、returnされます。これにより、hoge関数に**渡した文字列を保持した関数を作る関数**が作れます。
|
14
14
|
|
15
15
|
```javascript
|
16
16
|
var hogeWriter = hoge("hoge") // "hoge"を出力するWriter関数を作る
|