Памылка адсутнасць сцяга ў функцыі ў 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;
}