質問編集履歴
5
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
関数Aの実行結果がnullかundefinedのみに関数内に変数を新たに作らず、関数Bを実行させるには?
|
1
|
+
関数Aの実行結果がnullかundefinedの時のみに関数内に変数を新たに作らず、関数Bを実行させるには?
|
body
CHANGED
File without changes
|
4
`foo(v)`をこのように2回呼ぶことも出来るでしょうが、これは非効率なので避けたいところです。
title
CHANGED
File without changes
|
body
CHANGED
@@ -25,6 +25,13 @@
|
|
25
25
|
一応、このように`foo(v)`の結果をローカル変数に入れてから、`foo(v)`の結果が`null`または`undefined`ではないかをチェックすれば、
|
26
26
|
期待する動きにはなるのですが、このようにローカル変数を作らないと期待する結果は得られないでしょうか?
|
27
27
|
|
28
|
+
```
|
29
|
+
const hoge = (foo, bar) => (v) => {
|
30
|
+
return foo(v) != null ? foo(v) : bar(v);
|
31
|
+
}
|
32
|
+
```
|
33
|
+
`foo(v)`をこのように2回呼ぶことも出来るでしょうが、これは非効率なので避けたいところです。
|
34
|
+
|
28
35
|
```ここに言語を入力
|
29
36
|
const hoge = (foo, bar) => (v) => foo(v) || bar(v);
|
30
37
|
```
|
3
const zero = (v) => 0 * v; const double = (v) => 2 * v; console.log( hoge(zero, double)(10) )
title
CHANGED
File without changes
|
body
CHANGED
@@ -7,15 +7,11 @@
|
|
7
7
|
`bar(v)`が実行されてしまいます。
|
8
8
|
|
9
9
|
```
|
10
|
+
const zero = (v) => 0 * v;
|
11
|
+
const double = (v) => 2 * v;
|
12
|
+
|
10
13
|
console.log(
|
11
|
-
hoge(
|
12
|
-
function(v) {
|
13
|
-
return 0;
|
14
|
-
},
|
15
|
-
function(v) {
|
16
|
-
|
14
|
+
hoge(zero, double)(10)
|
17
|
-
}
|
18
|
-
)(10)
|
19
15
|
)
|
20
16
|
```
|
21
17
|
この場合だと、`0`は`falsy`なので、`20`が`返って来てしまいます。
|
2
const hoge = (foo, bar) => (v) => { const result = foo(v) return result != null ? result : bar(v);
title
CHANGED
File without changes
|
body
CHANGED
@@ -21,15 +21,9 @@
|
|
21
21
|
この場合だと、`0`は`falsy`なので、`20`が`返って来てしまいます。
|
22
22
|
|
23
23
|
```
|
24
|
-
|
24
|
+
const hoge = (foo, bar) => (v) => {
|
25
|
-
return function(v) {
|
26
|
-
|
25
|
+
const result = foo(v)
|
27
|
-
|
26
|
+
return result != null ? result : bar(v);
|
28
|
-
return result
|
29
|
-
} else {
|
30
|
-
return bar(v);
|
31
|
-
}
|
32
|
-
}
|
33
27
|
}
|
34
28
|
```
|
35
29
|
一応、このように`foo(v)`の結果をローカル変数に入れてから、`foo(v)`の結果が`null`または`undefined`ではないかをチェックすれば、
|
1
const hoge = (foo, bar) => (v) => foo(v) || bar(v);
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,9 +1,5 @@
|
|
1
1
|
```ここに言語を入力
|
2
|
-
function hoge(foo, bar) {
|
3
|
-
return function(v) {
|
4
|
-
|
2
|
+
const hoge = (foo, bar) => (v) => foo(v) || bar(v);
|
5
|
-
}
|
6
|
-
}
|
7
3
|
```
|
8
4
|
|
9
5
|
`foo(v)`の結果が`null`か`undefined`の時に`bar(v)`を実行させたいので、
|
@@ -40,11 +36,7 @@
|
|
40
36
|
期待する動きにはなるのですが、このようにローカル変数を作らないと期待する結果は得られないでしょうか?
|
41
37
|
|
42
38
|
```ここに言語を入力
|
43
|
-
function hoge(foo, bar) {
|
44
|
-
return function(v) {
|
45
|
-
|
39
|
+
const hoge = (foo, bar) => (v) => foo(v) || bar(v);
|
46
|
-
}
|
47
|
-
}
|
48
40
|
```
|
49
41
|
このように全て、引数に渡ってくる値のみで完結させたいのですが、何か方法があれば教えて頂ければ幸いです。
|
50
42
|
|