Грешка липса на флаг във функция в 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;
}