質問するログイン新規登録

質問編集履歴

10

例えを追加

2018/04/22 03:08

投稿

murabito
murabito

スコア108

title CHANGED
File without changes
body CHANGED
@@ -122,4 +122,6 @@
122
122
 
123
123
  - 再帰処理が行われる
124
124
  - その再帰関数(fn1)を別の関数(fn2)の引数に渡して実行する
125
- - 再帰関数(fn1)を渡す別の関数(fn2)のスコープにある変数を再帰関数(fn1)は参照する(キャッシュ等)
125
+ - 再帰関数(fn1)を渡す別の関数(fn2)のスコープにある変数を再帰関数(fn1)は参照する(キャッシュ等)
126
+
127
+ ※別の例を挙げると、フィボナッチの再帰的に行う関数をメモ化したようなものをイメージするとわかりやすいかもしれません。

9

修正

2018/04/22 03:08

投稿

murabito
murabito

スコア108

title CHANGED
File without changes
body CHANGED
@@ -118,9 +118,8 @@
118
118
 
119
119
  **質問に掲載しているサンプルコードは、表題のことを示す以外の意味はありません。**
120
120
 
121
- そのため、「サンプルコードの場合であれば、再帰をつかなくてもこう出来る、高階関数使わなくてもこう出来る」のような話ではなく、
121
+ そのため、「サンプルコードの場合であれば、再帰をつかなくてもこう出来る、高階関数使わなくてもこう出来る」のような話ではなく、以下の条件を前提とした質問となります。
122
- 以下の条件を前提とした質問となります。
123
122
 
124
123
  - 再帰処理が行われる
125
124
  - その再帰関数(fn1)を別の関数(fn2)の引数に渡して実行する
126
- - 再帰関数(fn1)別の関数(fn2)のスコープにある変数を参照する(キャッシュ等)
125
+ - 再帰関数(fn1)を渡す別の関数(fn2)のスコープにある変数を再帰関数(fn1)は参照する(キャッシュ等)

8

装飾

2018/04/22 03:03

投稿

murabito
murabito

スコア108

title CHANGED
File without changes
body CHANGED
@@ -116,9 +116,10 @@
116
116
 
117
117
  # 補足
118
118
 
119
- 質問に掲載しているサンプルコードは、表題のことを示す以外の意味はありません。
119
+ **質問に掲載しているサンプルコードは、表題のことを示す以外の意味はありません。**
120
+
120
121
  そのため、「サンプルコードの場合であれば、再帰をつかなくてもこう出来る、高階関数使わなくてもこう出来る」のような話ではなく、
121
- 以下前提となる話となります。
122
+ 以下の条件を前提とした質問となります。
122
123
 
123
124
  - 再帰処理が行われる
124
125
  - その再帰関数(fn1)を別の関数(fn2)の引数に渡して実行する

7

前提の追加

2018/04/22 03:01

投稿

murabito
murabito

スコア108

title CHANGED
File without changes
body CHANGED
@@ -112,4 +112,14 @@
112
112
  そのため、最初に載せた高階関数のコードにたどり着いたのですが、やはり、外のスコープの変数を参照しているということと、変数の巻き上げを使っているというところで、僕的には読みづらいと感じてしまいます。
113
113
  特に実際のコードはこれよりも長い為。
114
114
 
115
- こういう場合は、何か出来る対策はあるのでしょうか?
115
+ こういう場合は、何か出来る対策はあるのでしょうか?
116
+
117
+ # 補足
118
+
119
+ 質問に掲載しているサンプルコードは、表題のことを示す以外の意味はありません。
120
+ そのため、「サンプルコードの場合であれば、再帰をつかなくてもこう出来る、高階関数使わなくてもこう出来る」のような話ではなく、
121
+ 以下が前提となる話となります。
122
+
123
+ - 再帰処理が行われる
124
+ - その再帰関数(fn1)を別の関数(fn2)の引数に渡して実行する
125
+ - 再帰関数(fn1)は別の関数(fn2)のスコープにある変数を参照する(キャッシュ等)

6

const

2018/04/22 02:59

投稿

murabito
murabito

スコア108

title CHANGED
File without changes
body CHANGED
@@ -35,13 +35,13 @@
35
35
  ```ここに言語を入力
36
36
  function hof(fn) {
37
37
 
38
- var hr = '-----'
38
+ const hr = '-----'
39
39
 
40
40
  return function inner() {
41
41
 
42
42
  console.log(hr);
43
43
 
44
- var args = Array.prototype.slice.apply(arguments);
44
+ const args = Array.prototype.slice.apply(arguments);
45
45
 
46
46
  fn.apply(this, args);
47
47
  }

5

書式の改善

2018/04/22 01:20

投稿

murabito
murabito

スコア108

title CHANGED
File without changes
body CHANGED
@@ -103,7 +103,8 @@
103
103
  #
104
104
  ```
105
105
 
106
- こちらの方が読み手にとって直感的で分かりやすいと思うのですが、
106
+ こちらの方が読み手にとって直感的で分かりやすいと思うのですが、、、
107
+
107
108
  **出力される結果は期待通りのものにはなりません。**
108
109
 
109
110
  原因はコード内のコメントに記した通りです。

4

書式の改善

2018/04/22 00:33

投稿

murabito
murabito

スコア108

title CHANGED
File without changes
body CHANGED
@@ -76,7 +76,7 @@
76
76
  質問用に用意した簡易的なコードのため、機能としては意味がないですが、
77
77
  単純に区切り線を追加する高階関数です。
78
78
 
79
- このコード自体は期待した動作をします。
79
+ **このコード自体は期待した動作をします。**
80
80
 
81
81
 
82
82
 
@@ -104,7 +104,8 @@
104
104
  ```
105
105
 
106
106
  こちらの方が読み手にとって直感的で分かりやすいと思うのですが、
107
- 出力される結果は期待通りのものにはなりません。
107
+ **出力される結果は期待通りのものにはなりません。**
108
+
108
109
  原因はコード内のコメントに記した通りです。
109
110
 
110
111
  そのため、最初に載せた高階関数のコードにたどり着いたのですが、やはり、外のスコープの変数を参照しているということと、変数の巻き上げを使っているというところで、僕的には読みづらいと感じてしまいます。

3

修正

2018/04/22 00:32

投稿

murabito
murabito

スコア108

title CHANGED
File without changes
body CHANGED
@@ -110,4 +110,4 @@
110
110
  そのため、最初に載せた高階関数のコードにたどり着いたのですが、やはり、外のスコープの変数を参照しているということと、変数の巻き上げを使っているというところで、僕的には読みづらいと感じてしまいます。
111
111
  特に実際のコードはこれよりも長い為。
112
112
 
113
- こういう場合は、何か可読性をあげために対策はあるのでしょうか?
113
+ こういう場合は、何か出来る対策はあるのでしょうか?

2

極力

2018/04/22 00:24

投稿

murabito
murabito

スコア108

title CHANGED
File without changes
body CHANGED
@@ -5,6 +5,8 @@
5
5
 
6
6
  言葉での説明が上手く出来そうにないので、質問用に用意した簡易的なコードで説明をいたします。
7
7
 
8
+ ※極力、ES6を使わずに書きました。
9
+
8
10
  # 高階関数に渡す関数
9
11
 
10
12
  ```
@@ -71,8 +73,6 @@
71
73
  -----
72
74
  ```
73
75
 
74
- ※ES6を使わずに書きました。
75
-
76
76
  質問用に用意した簡易的なコードのため、機能としては意味がないですが、
77
77
  単純に区切り線を追加する高階関数です。
78
78
 

1

補足

2018/04/22 00:11

投稿

murabito
murabito

スコア108

title CHANGED
File without changes
body CHANGED
@@ -108,5 +108,6 @@
108
108
  原因はコード内のコメントに記した通りです。
109
109
 
110
110
  そのため、最初に載せた高階関数のコードにたどり着いたのですが、やはり、外のスコープの変数を参照しているということと、変数の巻き上げを使っているというところで、僕的には読みづらいと感じてしまいます。
111
+ 特に実際のコードはこれよりも長い為。
111
112
 
112
113
  こういう場合は、何か可読性をあげるために対策はあるのでしょうか?