Fehler fehlendes Flag in Funktion in JavaScript
Angenommen, wir möchten eine Funktion erstellen, die als Parameter eine Ziffer und eine Zahl annimmt und prüft, ob die gegebene Ziffer in der Zahl vorhanden ist:
function func(needle, num) {
// hier wird der Code stehen
}
So werden wir unsere Funktion verwenden:
console.log(func('3', '12345')); // gibt true aus
Ein gewisser Programmierer hat eine Lösung für diese Aufgabe geschrieben:
function func(needle, num) {
for (let digit of num) {
if (digit === needle) {
return true;
} else {
return false;
}
}
}
Diese Lösung funktioniert jedoch nicht korrekt.
Der Grund dafür ist, dass in der Schleife eine Bedingung steht,
in der bereits in der ersten Iteration
entweder der eine return
oder der andere ausgeführt wird, wodurch
der Ausstieg sowohl aus der Schleife als auch aus der Funktion erfolgt.
Schreiben wir unseren Code auf korrekte Weise um, indem wir implizite Flags in Funktionen verwenden:
function func(needle, num) {
for (let digit of num) {
if (digit === needle) {
return true;
}
}
return false;
}