質問編集履歴
10
例えを追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -247,3 +247,7 @@
|
|
247
247
|
- その再帰関数(fn1)を別の関数(fn2)の引数に渡して実行する
|
248
248
|
|
249
249
|
- 再帰関数(fn1)を渡す別の関数(fn2)のスコープにある変数を再帰関数(fn1)は参照する(キャッシュ等)
|
250
|
+
|
251
|
+
|
252
|
+
|
253
|
+
※別の例を挙げると、フィボナッチの再帰的に行う関数をメモ化したようなものをイメージするとわかりやすいかもしれません。
|
9
修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -238,9 +238,7 @@
|
|
238
238
|
|
239
239
|
|
240
240
|
|
241
|
-
そのため、「サンプルコードの場合であれば、再帰をつかなくてもこう出来る、高階関数使わなくてもこう出来る」のような話ではなく、
|
241
|
+
そのため、「サンプルコードの場合であれば、再帰をつかなくてもこう出来る、高階関数使わなくてもこう出来る」のような話ではなく、以下の条件を前提とした質問となります。
|
242
|
-
|
243
|
-
以下の条件を前提とした質問となります。
|
244
242
|
|
245
243
|
|
246
244
|
|
@@ -248,4 +246,4 @@
|
|
248
246
|
|
249
247
|
- その再帰関数(fn1)を別の関数(fn2)の引数に渡して実行する
|
250
248
|
|
251
|
-
- 再帰関数(fn1)
|
249
|
+
- 再帰関数(fn1)を渡す別の関数(fn2)のスコープにある変数を再帰関数(fn1)は参照する(キャッシュ等)
|
8
装飾
test
CHANGED
File without changes
|
test
CHANGED
@@ -234,11 +234,13 @@
|
|
234
234
|
|
235
235
|
|
236
236
|
|
237
|
-
質問に掲載しているサンプルコードは、表題のことを示す以外の意味はありません。
|
237
|
+
**質問に掲載しているサンプルコードは、表題のことを示す以外の意味はありません。**
|
238
|
+
|
239
|
+
|
238
240
|
|
239
241
|
そのため、「サンプルコードの場合であれば、再帰をつかなくてもこう出来る、高階関数使わなくてもこう出来る」のような話ではなく、
|
240
242
|
|
241
|
-
以下
|
243
|
+
以下の条件を前提とした質問となります。
|
242
244
|
|
243
245
|
|
244
246
|
|
7
前提の追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -227,3 +227,23 @@
|
|
227
227
|
|
228
228
|
|
229
229
|
こういう場合は、何か出来る対策はあるのでしょうか?
|
230
|
+
|
231
|
+
|
232
|
+
|
233
|
+
# 補足
|
234
|
+
|
235
|
+
|
236
|
+
|
237
|
+
質問に掲載しているサンプルコードは、表題のことを示す以外の意味はありません。
|
238
|
+
|
239
|
+
そのため、「サンプルコードの場合であれば、再帰をつかなくてもこう出来る、高階関数使わなくてもこう出来る」のような話ではなく、
|
240
|
+
|
241
|
+
以下が前提となる話となります。
|
242
|
+
|
243
|
+
|
244
|
+
|
245
|
+
- 再帰処理が行われる
|
246
|
+
|
247
|
+
- その再帰関数(fn1)を別の関数(fn2)の引数に渡して実行する
|
248
|
+
|
249
|
+
- 再帰関数(fn1)は別の関数(fn2)のスコープにある変数を参照する(キャッシュ等)
|
6
const
test
CHANGED
File without changes
|
test
CHANGED
@@ -72,7 +72,7 @@
|
|
72
72
|
|
73
73
|
|
74
74
|
|
75
|
-
|
75
|
+
const hr = '-----'
|
76
76
|
|
77
77
|
|
78
78
|
|
@@ -84,7 +84,7 @@
|
|
84
84
|
|
85
85
|
|
86
86
|
|
87
|
-
|
87
|
+
const args = Array.prototype.slice.apply(arguments);
|
88
88
|
|
89
89
|
|
90
90
|
|
5
書式の改善
test
CHANGED
File without changes
|
test
CHANGED
@@ -208,7 +208,9 @@
|
|
208
208
|
|
209
209
|
|
210
210
|
|
211
|
-
こちらの方が読み手にとって直感的で分かりやすいと思うのですが、
|
211
|
+
こちらの方が読み手にとって直感的で分かりやすいと思うのですが、、、
|
212
|
+
|
213
|
+
|
212
214
|
|
213
215
|
**出力される結果は期待通りのものにはなりません。**
|
214
216
|
|
4
書式の改善
test
CHANGED
File without changes
|
test
CHANGED
@@ -154,7 +154,7 @@
|
|
154
154
|
|
155
155
|
|
156
156
|
|
157
|
-
このコード自体は期待した動作をします。
|
157
|
+
**このコード自体は期待した動作をします。**
|
158
158
|
|
159
159
|
|
160
160
|
|
@@ -210,7 +210,9 @@
|
|
210
210
|
|
211
211
|
こちらの方が読み手にとって直感的で分かりやすいと思うのですが、
|
212
212
|
|
213
|
-
出力される結果は期待通りのものにはなりません。
|
213
|
+
**出力される結果は期待通りのものにはなりません。**
|
214
|
+
|
215
|
+
|
214
216
|
|
215
217
|
原因はコード内のコメントに記した通りです。
|
216
218
|
|
3
修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -222,4 +222,4 @@
|
|
222
222
|
|
223
223
|
|
224
224
|
|
225
|
-
こういう場合は、何か
|
225
|
+
こういう場合は、何か出来る対策はあるのでしょうか?
|
2
極力
test
CHANGED
File without changes
|
test
CHANGED
@@ -12,6 +12,10 @@
|
|
12
12
|
|
13
13
|
|
14
14
|
|
15
|
+
※極力、ES6を使わずに書きました。
|
16
|
+
|
17
|
+
|
18
|
+
|
15
19
|
# 高階関数に渡す関数
|
16
20
|
|
17
21
|
|
@@ -144,10 +148,6 @@
|
|
144
148
|
|
145
149
|
|
146
150
|
|
147
|
-
※ES6を使わずに書きました。
|
148
|
-
|
149
|
-
|
150
|
-
|
151
151
|
質問用に用意した簡易的なコードのため、機能としては意味がないですが、
|
152
152
|
|
153
153
|
単純に区切り線を追加する高階関数です。
|
1
補足
test
CHANGED
File without changes
|
test
CHANGED
@@ -218,6 +218,8 @@
|
|
218
218
|
|
219
219
|
そのため、最初に載せた高階関数のコードにたどり着いたのですが、やはり、外のスコープの変数を参照しているということと、変数の巻き上げを使っているというところで、僕的には読みづらいと感じてしまいます。
|
220
220
|
|
221
|
+
特に実際のコードはこれよりも長い為。
|
222
|
+
|
221
223
|
|
222
224
|
|
223
225
|
こういう場合は、何か可読性をあげるために対策はあるのでしょうか?
|