Wenn Sie nicht undefined
wollen, müssen Sie sicherstellen, dass Ihre Funktion etwas ganz gleich wieder, wie es aufgerufen wird.
Sie müssen auf die Existenz der Argumente testen. Sie können dies tun, indem Sie die integrierte arguments
Objekt length
Eigenschaft überprüfen.
Sie sollten auch überprüfen, dass die Argumente vom richtigen Typ sind (ich nehme an, dass Sie Zahlen denken).
Übrigens, Ihre Logik gibt nicht an, was passieren sollte, wenn x === y
, also, wenn Sie für diese Bedingung überprüfen, wird die Funktion nichts zurück und dann, wenn Sie versuchen, den Rückgabewert zu verwenden, erhalten Sie undefined
.
function getFooBar(x, y) {
// Make sure both arguments were passed
if(arguments.length === 2 && typeof x === "number" && typeof y === "number"){
if (x > y) {
return foo();
}
if (y > x) {
return bar();
}
} else {
// One or both arguments are missing.
// You can do whatever you like here.
// In this example, it will return a failure message,
// but, you could simply use return with no value.
return "invalid function call";
}
}
function foo() {
// do stuff.
return "foo";
}
function bar() {
// do some other stuff.
return "bar";
}
console.log(getFooBar());
console.log(getFooBar("Tuesday", "Purple"));
console.log(getFooBar(5,5)); // No condition tests for equal arguments, so no value is returned
// This time we'll check to see if there is a value to work with before assuming it's there:
var result = getFooBar(5,5);
if(result){
console.log(result);
} else {
console.log("getFooBar(5,5) doesn't return a value.");
}
console.log(getFooBar(5,10));
console.log(getFooBar(10,5));
Wenn nichts zurückgegeben explizit wird es undefined zurück. – brk
Warum willst du nicht, dass es unbestimmt zurückkommt? –
Da wir alle zusammen mit wertvollen Antworten beantwortet haben, habe ich euch Jungs – mnemosdev