Erreur d'absence de drapeau dans une fonction en JavaScript
Supposons que nous voulons créer une fonction qui prendra comme paramètres un chiffre et un nombre, et vérifiera si le chiffre donné est présent dans le nombre :
function func(needle, num) {
// le code sera ici
}
Voici comment nous utiliserons notre fonction :
console.log(func('3', '12345')); // affichera true
Un certain programmeur a écrit une solution à cette tâche :
function func(needle, num) {
for (let digit of num) {
if (digit === needle) {
return true;
} else {
return false;
}
}
}
Cette solution, cependant, fonctionne incorrectement.
Le problème est que dans la boucle, une condition est écrite
dans laquelle, dès la première itération,
soit un return s'exécutera,
soit l'autre, réalisant ainsi
une sortie à la fois de la boucle et de la fonction.
Réécrivons notre code de manière correcte, en utilisant des drapeaux implicites dans les fonctions :
function func(needle, num) {
for (let digit of num) {
if (digit === needle) {
return true;
}
}
return false;
}