Ֆունկցիայում դրոշի բացակայության սխալ 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;
}