Chyba absence příznaku ve funkci v JavaScriptu
Předpokládejme, že chceme vytvořit funkci, která bude jako parametr přijímat číslici a číslo, a kontrolovat, zda se zadaná číslice v čísle nachází:
function func(needle, num) {
// zde bude kód
}
Takhle budeme naši funkci používat:
console.log(func('3', '12345')); // vypíše true
Jistý programátor napsal řešení tohoto úkolu:
function func(needle, num) {
for (let digit of num) {
if (digit === needle) {
return true;
} else {
return false;
}
}
}
Toto řešení však funguje nesprávně.
Jde o to, že v cyklu je napsána podmínka,
ve které se v první iteraci
provede buď jeden return,
nebo druhý, čímž dojde
k ukončení jak cyklu, tak funkce.
Přepišme náš kód správným způsobem pomocí nepřímých příznaků ve funkcích:
function func(needle, num) {
for (let digit of num) {
if (digit === needle) {
return true;
}
}
return false;
}