Virhe lipun puuttuminen funktiossa JavaScriptissä
Oletetaan, että haluamme tehdä funktion, jonka parametrina on numero ja luku, ja tarkistaa, onko annettu numero luvussa:
function func(needle, num) {
// tähän tulee koodi
}
Näin käytämme funktiotamme:
console.log(func('3', '12345')); // tulostaa true
Eräs ohjelmoija kirjoitti ratkaisun tähän tehtävään:
function func(needle, num) {
for (let digit of num) {
if (digit === needle) {
return true;
} else {
return false;
}
}
}
Tämä ratkaisu ei kuitenkaan toimi oikein.
Kyse on siitä, että silmukassa on ehto,
jossa ensimmäisellä iteraatiolla
suoritetaan joko yksi return,
tai toinen, ja näin tapahtuu
poistuminen sekä silmukasta että funktiosta.
Kirjoitetaan koodimme uudelleen oikealla tavalla käyttämällä implisiittisiä lippuja funktioissa:
function func(needle, num) {
for (let digit of num) {
if (digit === needle) {
return true;
}
}
return false;
}