0
私は2つの引数を合計する関数を作成する必要があるfreecodecampの練習をしています。引数が1つしかない場合は、1つの引数を必要とする関数を返し、その合計を返します。javascriptのクロージャを使用して2つの引数を合計する
たとえば、addTogether(2,3)は5を返し、addTogether(2)は関数を返す必要があります。
私のコードは次の通りである:
function isNumber(n) {
return !isNaN(parseFloat(n)) && isFinite(n);
}
function isFunction(functionToCheck) {
var getType = {};
return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';
}
function addTogether() {
var args = Array.prototype.slice.call(arguments);
var param1=args[0];
var sum=function(){
var argSub=Array.prototype.slice.call(arguments);
var param2=argSub[0];
if (isNumber(param2))
return;
else
return param1+param2;
};
if (args.length===1){
return sum;
} else if (isNumber(param1)){
return param1+args[1];
}
}
addTogether(2,3);
私はaddTogetherは(2)(3)5を返す必要がない、と私はaddTogetherを実行したとき(2、 "3")「undefinedを返す必要がある場合には'。
私はparamsをチェックしているように私は失敗していると思います。私は多くの異なる設定を試して、私は立ち往生しています。何かアドバイス??
ありがとうございました
はFYIこれはカリー化と呼ばれています。 – gcampbell
あなたはどういう意味ですか?閉鎖じゃない?これはdeveloper.mozillaを含むいくつかのWebサイトでの定義です。 – galeonweb
クロージャを使用していますが、このような関数を分解するテクニックは[currying](http://stackoverflow.com/questions/36314/what-is-currying)と呼ばれています。 )。 – gcampbell