Fejl ved manglende flag i funktion i JavaScript
Lad os sige, at vi ønsker at lave en funktion, som vil tage et ciffer og et tal som parameter, og kontrollere, om det specificerede ciffer findes i tallet:
function func(needle, num) {
// koden vil være her
}
Sådan her vil vi bruge vores funktion:
console.log(func('3', '12345')); // vil udskrive true
En eller anden programmør skrev en løsning på denne opgave:
function func(needle, num) {
for (let digit of num) {
if (digit === needle) {
return true;
} else {
return false;
}
}
}
Denne løsning fungerer dog ikke korrekt.
Årsagen er, at der i løkken er skrevet en betingelse,
hvor der i den første iteration enten
vil udføres den ene return,
eller den anden, hvilket derved vil resultere i
afslutning af både løkken og funktionen.
Lad os omskrive vores kode på en korrekt måde ved at bruge implicitte flag i funktioner:
function func(needle, num) {
for (let digit of num) {
if (digit === needle) {
return true;
}
}
return false;
}