Chyba: chýbajúca vlajka vo funkcii v JavaScripte
Predpokladajme, že chceme vytvoriť funkciu, ktorá bude ako parameter prijímať cifru a číslo a kontrolovať, či sa zadaná cifra nachádza v čísle:
function func(needle, num) {
// tu bude kód
}
Takto budeme našu funkciu používať:
console.log(func('3', '12345')); // vypíše true
Nejaký programátor napísal riešenie tejto úlohy:
function func(needle, num) {
for (let digit of num) {
if (digit === needle) {
return true;
} else {
return false;
}
}
}
Toto riešenie však funguje nesprávne.
Problém je v tom, že v cykle je napísaná podmienka,
v ktorej sa v prvej iterácii
vykoná buď jeden return,
alebo druhý, čím sa uskutoční
výstup z cyklu aj z funkcie.
Prepíšme náš kód správnym spôsobom pomocou neimplikovaných vlajok vo funkciách:
function func(needle, num) {
for (let digit of num) {
if (digit === needle) {
return true;
}
}
return false;
}