Пусть мы хотим сделать функцию, которая параметром будет принимать цифру и число, и проверять, есть ли заданная цифра в числе:
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;
}