Fel avsaknad av flagga i funktion i JavaScript
Låt oss säga att vi vill skapa en funktion, som som parameter kommer att ta en siffra och ett nummer, och kontrollera om den givna siffran finns i numret:
function func(needle, num) {
// koden kommer att vara här
}
Så här kommer vi att använda vår funktion:
console.log(func('3', '12345')); // kommer att skriva ut true
En programmerare skrev en lösning på detta problem:
function func(needle, num) {
for (let digit of num) {
if (digit === needle) {
return true;
} else {
return false;
}
}
}
Denna lösning fungerar dock inte korrekt.
Anledningen är att i loopen finns ett villkor,
där i den första iterationen
antingen en return kommer att exekveras,
eller den andra, vilket resulterar i
avslut av både loopen och funktionen.
Låt oss skriva om vår kod på ett korrekt sätt, med hjälp av implicita flaggor i funktioner:
function func(needle, num) {
for (let digit of num) {
if (digit === needle) {
return true;
}
}
return false;
}