Ralat ketiadaan bendera dalam fungsi di JavaScript
Katakan kita ingin membuat fungsi, yang akan menerima digit dan nombor sebagai parameter, dan memeriksa sama ada digit yang ditentukan terdapat dalam nombor tersebut:
function func(needle, num) {
// kod akan berada di sini
}
Berikut adalah cara kita akan menggunakan fungsi kami:
console.log(func('3', '12345')); // akan memaparkan true
Seorang pengaturcara menulis penyelesaian untuk masalah ini:
function func(needle, num) {
for (let digit of num) {
if (digit === needle) {
return true;
} else {
return false;
}
}
}
Walau bagaimanapun, penyelesaian ini berfungsi dengan tidak betul.
Masalahnya ialah dalam gelung, terdapat syarat
di mana pada lelaran pertama
sama ada satu return akan dilaksanakan,
atau yang lain, dengan itu menyebabkan
keluar dari kedua-dua gelung dan fungsi.
Tulis semula kod kami dengan cara yang betul, menggunakan bendera tersirat dalam fungsi:
function func(needle, num) {
for (let digit of num) {
if (digit === needle) {
return true;
}
}
return false;
}