Kļūda: karoga trūkums funkcijā JavaScript
Pieņemsim, ka mēs vēlamies izveidot funkciju, kura parametru veidā pieņems ciparu un skaitli, un pārbaudīs, vai norādītais cipars atrodas skaitlī:
function func(needle, num) {
// šeit būs kods
}
Lūk, kā mēs izmantosim savu funkciju:
console.log(func('3', '12345')); // izvadīs true
Kāds programmētājs uzrakstīja šīs uzdevuma risinājumu:
function func(needle, num) {
for (let digit of num) {
if (digit === needle) {
return true;
} else {
return false;
}
}
}
Šis risinājums tomēr strādā nepareizi.
Lieta ir tāda, ka cilpā ir uzrakstīts nosacījums,
kurā jau pirmās iterācijas laikā
izpildīsies vai nu viens return,
vai otrs, tādējādi veicot
izeju gan no cilpas, gan no funkcijas.
Pārrakstīsim mūsu kodu pareizā veidā, izmantojot netiešos karogus funkcijās:
function func(needle, num) {
for (let digit of num) {
if (digit === needle) {
return true;
}
}
return false;
}