回答編集履歴

2

修正

2022/01/15 14:47

投稿

umau
umau

スコア805

test CHANGED
@@ -21,3 +21,7 @@
21
21
  fugaWriter(some_func)
22
22
  ```
23
23
  クロージャ、というキーワードで調べてみると良いと思います。
24
+
25
+ (追記)
26
+ ※分割せずに連続で書くと`hoge("hoge")(sum_func)`ですが、これが何故かは処理の内容次第ですが、
27
+ 単にクロージャ関数を連続で呼び出して短く書いただけ、で良いと思います。

1

2022/01/15 14:28

投稿

umau
umau

スコア805

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関数を作る