Я делаю упражнение для 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") должен возвращать «не определено '.
Я думаю, что я терплю неудачу в том, как я проверяю параметры. Я пробовал много разных конфигураций, и я застрял. Любой совет??
Thanks
FYI это называется Выделка. – gcampbell
что вы имеете в виду ?? Разве это не закрытие? Это определение, которое вы получаете на некоторых веб-сайтах, включая developer.mozilla – galeonweb
Он использует замыкания, но метод разрушения таких функций называется [currying] (http://stackoverflow.com/questions/36314/what-is-currying). – gcampbell