0
我正在爲freecodecamp做一個練習,我必須創建一個將兩個參數彙總在一起的函數。如果只提供一個參數,則返回一個需要一個參數並返回總和的函數。在javascript中使用閉包總結兩個參數
例如,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」)應該返回「未定義'。
我想我在檢查參數的方式失敗。我已經嘗試了很多diferents配置,我卡住了。任何建議?
謝謝
FYI這就是所謂的鑽營。 – gcampbell
你是什麼意思?不是閉包嗎?這是你在一些網站上得到的定義,包括developer.mozilla – galeonweb
它使用閉包,但是像這樣分解函數的技術被稱爲[currying](http://stackoverflow.com/questions/36314/what-is-currying )。 – gcampbell