Vėliavos nebuvimo klaida JavaScript cikle
Tarkime, kad turime tam tikrą skaičių:
let num = '12345';
Patikrinkime, ar šiame skaičiuje yra nurodytas skaitmuo. Kažkoks programuotojas jau parašė kodą, įgyvendinantį aprašytą:
for (let digit of num) {
if (digit === '3') {
console.log('yra');
} else {
console.log('nėra');
}
}
Šis kodas, tačiau, veikia neteisingai, išvedant 'yra' ar 'nėra' kiekvienam masyvo elementui.
Mums reikia, kad rezultatas būtų išvestas tik vieną kartą. Šiuo atveju, derinant su ciklu, problema išsprendžiama tik naudojant vėliavą:
let hasDigit = false; // vėliava
for (let digit of num) {
if (digit === '3') {
hasDigit = true;
break;
}
}
if (hasDigit) {
console.log('yra');
} else {
console.log('nėra');
}