Die folgende Funktion fügt Argumente innerhalb von 1 paranthesis fine hinzu. Zum Beispiel berechnet es addTogether(2,3) = 5
und addTogether(2,"3") = undefined
.Warum funktioniert meine Schließfunktion nicht?
Es schlägt jedoch addTogether(2)(3) = 5
nicht zu berechnen, stattdessen gibt mir der Fehler "addTogether (...) ist keine Funktion". Die Closure-Funktion (return function(x)
) soll in das zweite Argument in addTogether(2)(3)
eingehen, und ich weiß nicht, warum es nicht funktioniert.
function addTogether() {
if (typeof arguments[0] !== "number" || typeof arguments[1] !== "number") {
return undefined;
} //not harmful but not necessary
var sum = 0;
var num = arguments[0];
if (arguments.length === 1) {
//if only 1 argument in the original function...
if (typeof arguments[0] !== "number") {
return undefined;
//returns undefined if arguments[0] isnt a number
}
return function(x) {
if (typeof arguments[0] !== "number") {
return undefined;
//in the closure/2nd function, if first argument isnt a number then no sum will be provided
} else {
sum = num + x; //x = second given argument
return sum;
}
};
}
if (typeof arguments[0] === "number" && typeof arguments[1] === "number") {
for (var x = 0; x < arguments.length; x++) {
if (typeof arguments[x] === "number") {
sum += arguments[x];
//add the argument[0] and [1] if both are number types, not string or array types or any other types
} else {
sum = undefined;
}
}
return sum;
}
// the above "if" statement is rsponsible for achieving addTogether(2,3) = 5;
}
console.log(addTogether(2)(3));
'if (typofarguments [0]! ==" number "|| typofarguments [1]! ==" number ")' bewirkt bereits 'addTogether (2)', um 'undefined' zurückzugeben. – Xufox
^Wenn Sie nur ein einzelnes Argument übergeben, ist 'typeof arguments [1]! ==" number "' 'true' (weil' typeof arguments [1] ''' undefined' 'zurückgibt). –
Der Kommentar "Nicht schädlich aber nicht notwendig" ist falsch. Es ist nicht notwendig, und es ist schädlich. – Barmar