Feil ved mangel på flagg i funksjon i JavaScript
La oss si at vi ønsker å lage en funksjon, som tar et siffer og et tall som parameter, og sjekker om det oppgitte sifferet finnes i tallet:
function func(needle, num) {
// koden vil være her
}
Slik vil vi bruke funksjonen vår:
console.log(func('3', '12345')); // vil skrive ut true
En programmerer skrev en løsning på denne oppgaven:
function func(needle, num) {
for (let digit of num) {
if (digit === needle) {
return true;
} else {
return false;
}
}
}
Denne løsningen fungerer imidlertid ikke korrekt.
Grunnen er at det i løkken er skrevet en betingelse,
der det i første iterasjon
vil utføres enten den ene return,
eller den andre, og dermed vil den
avslutte både løkken og funksjonen.
La oss omskrive koden vår på riktig måte, ved å bruke implisitte flagg i funksjoner:
function func(needle, num) {
for (let digit of num) {
if (digit === needle) {
return true;
}
}
return false;
}