質問編集履歴

10

例えを追加

2018/04/22 03:08

投稿

murabito
murabito

スコア108

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

修正

2018/04/22 03:08

投稿

murabito
murabito

スコア108

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)別の関数(fn2)のスコープにある変数を参照する(キャッシュ等)
249
+ - 再帰関数(fn1)を渡す別の関数(fn2)のスコープにある変数を再帰関数(fn1)は参照する(キャッシュ等)

8

装飾

2018/04/22 03:03

投稿

murabito
murabito

スコア108

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

前提の追加

2018/04/22 03:01

投稿

murabito
murabito

スコア108

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

2018/04/22 02:59

投稿

murabito
murabito

スコア108

test CHANGED
File without changes
test CHANGED
@@ -72,7 +72,7 @@
72
72
 
73
73
 
74
74
 
75
- var hr = '-----'
75
+ const hr = '-----'
76
76
 
77
77
 
78
78
 
@@ -84,7 +84,7 @@
84
84
 
85
85
 
86
86
 
87
- var args = Array.prototype.slice.apply(arguments);
87
+ const args = Array.prototype.slice.apply(arguments);
88
88
 
89
89
 
90
90
 

5

書式の改善

2018/04/22 01:20

投稿

murabito
murabito

スコア108

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

書式の改善

2018/04/22 00:33

投稿

murabito
murabito

スコア108

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

修正

2018/04/22 00:32

投稿

murabito
murabito

スコア108

test CHANGED
File without changes
test CHANGED
@@ -222,4 +222,4 @@
222
222
 
223
223
 
224
224
 
225
- こういう場合は、何か可読性をあげために対策はあるのでしょうか?
225
+ こういう場合は、何か出来る対策はあるのでしょうか?

2

極力

2018/04/22 00:24

投稿

murabito
murabito

スコア108

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

補足

2018/04/22 00:11

投稿

murabito
murabito

スコア108

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
  こういう場合は、何か可読性をあげるために対策はあるのでしょうか?