Lipu puudumise vea funktsioonis JavaScriptis
Oletame, et tahame teha funktsiooni, mis võtab parameetritena numbri ja arvu, ning kontrollib, kas antud number on arvus olemas:
function func(needle, num) {
// siin on kood
}
Nii me kasutame oma funktsiooni:
console.log(func('3', '12345')); // väljastab true
Mingi programmeerija kirjutas selle ülesande lahenduse:
function func(needle, num) {
for (let digit of num) {
if (digit === needle) {
return true;
} else {
return false;
}
}
}
See lahendus aga ei tööta korrektselt.
Asi on selles, et tsüklis on kirjutatud tingimus,
milles juba esimese iteratsiooni jooksul
tehakse kas üks return
või teine, ning nii väljutakse
nii tsüklist kui ka funktsioonist.
Kirjutame oma koodi ümber õigel viisil, kasutades kaudseid lippe funktsioonides:
function func(needle, num) {
for (let digit of num) {
if (digit === needle) {
return true;
}
}
return false;
}