JavaScript функцияда байроқ йўқлиги хатоси
Фараз қилайлик, биз параметр сифатида рақам ва сонни қабул қиладиган ва берилган рақам соннинг ичида бор-йўқлигини текширадиган функция ясамоқчимиз:
function func(needle, num) {
// бу ерда код бўлади
}
Биз ўз функциямиздан шу тарзда фойдаланамиз:
console.log(func('3', '12345')); // true чиқаради
Бир программачи бу масаланинг ечимини шу тарзда ёзган:
function func(needle, num) {
for (let digit of num) {
if (digit === needle) {
return true;
} else {
return false;
}
}
}
Бирок, бу ечим тўғри ишламайди.
Сабаби, циклда шарт ёзилган бўлиб,
унда биринчи итерацияда ёки биринчи
return, ёки иккинчиси бажарилади,
шу тарзда циклдан ва функциядан чиқиб
кетилади.
Кодимизни тўғри қайта ёзайлик, функциялардаги нозик байроқлардан фойдаланиб:
function func(needle, num) {
for (let digit of num) {
if (digit === needle) {
return true;
}
}
return false;
}