Errore Assenza di Flag nelle Funzioni in JavaScript
Supponiamo di voler creare una funzione che accetti come parametri una cifra e un numero, e verifichi se la cifra specificata è presente nel numero:
function func(needle, num) {
// qui andrà il codice
}
Ecco come utilizzeremo la nostra funzione:
console.log(func('3', '12345')); // restituirà true
Un qualche programmatore ha scritto questa soluzione al problema:
function func(needle, num) {
for (let digit of num) {
if (digit === needle) {
return true;
} else {
return false;
}
}
}
Tuttavia, questa soluzione non funziona correttamente.
Il fatto è che nel ciclo è scritta una condizione,
in cui già alla prima iterazione
verrà eseguito o un return,
o l'altro, effettuando così
l'uscita sia dal ciclo che dalla funzione.
Riscriviamo il nostro codice in modo corretto, utilizzando flag impliciti nelle funzioni:
function func(needle, num) {
for (let digit of num) {
if (digit === needle) {
return true;
}
}
return false;
}