Fout ontbrekende vlag in functie in JavaScript
Stel we willen een functie maken, die als parameter een cijfer en een getal accepteert, en controleert of het opgegeven cijfer in het getal voorkomt:
function func(needle, num) {
// hier komt de code
}
Zo zullen we onze functie gebruiken:
console.log(func('3', '12345')); // geeft true weer
Een programmeur schreef deze oplossing voor het probleem:
function func(needle, num) {
for (let digit of num) {
if (digit === needle) {
return true;
} else {
return false;
}
}
}
Deze oplossing werkt echter niet correct.
Het probleem is dat in de lus een voorwaarde staat,
waarin in de eerste iteratie
of de ene return,
of de andere wordt uitgevoerd, waardoor er
een uitgang is uit zowel de lus als de functie.
Laten we onze code op de juiste manier herschrijven, met behulp van impliciete vlaggen in functies:
function func(needle, num) {
for (let digit of num) {
if (digit === needle) {
return true;
}
}
return false;
}