任意の数の出力を受け入れ:使用JavaScriptのクロージャ(A)(B)(A)(B)は、例えば、+ bを= B + =と和のためのブラケット
和(1 1)(2)= 6
和(6) - ( - 1)( - 2)( - 3)= 0
)(2)3
和(5)(=目的は、任意の数の入力引数を受け入れることです。
私はこの質問に適切な解決策を見てきました。 私の方法は私の方法が機能しない理由です。
右溶液:
function sum(a){
var sum = a
function f(b){
sum += b
return f
}
f.toString = function(){return sum}
return f
}
マイ方法:
function add(a){
function add1(b){
if(b === undefined){
console.log(a);
return;
}
else{
return add(a+b);
}
}
if(a === undefined){
console.log(a);
return;
}
else{
return add1;
}
}
試験データ:(2)(4)を追加し、(4)を追加します。 両方のテストケースで、ブランチ "a === undefined"または "b === undefined"には決して達しません。私はこれについて非常に混乱しています。 aとbが機能するためのパラメータであるためです
最初の呼び出しで 'a'をデフォルトの' 0'に設定しない限り、 'if(a === undefined){'は必要ありません。呼び出し元が 'add'を呼び出す唯一の時間は最初の呼び出しです。その後、 'add'は内部的にのみ呼び出されるので、呼び出し側は最初の呼び出しの後に常に' add1'を取得します。 –
@Guedesはい、それが理由です。ありがとう。 –
@squintはい、 'if(a === undefined){'は不要です。私はそれを削除した後、私は関数 'add()'が関数 'add1'を返すだけで、それは基本的に正しい解と同じです。 –