Lỗi thiếu cờ trong hàm trong JavaScript
Giả sử chúng ta muốn tạo một hàm, tham số của nó sẽ nhận một chữ số và một số, và kiểm tra xem chữ số đã cho có tồn tại trong số đó không:
function func(needle, num) {
// mã sẽ ở đây
}
Chúng ta sẽ sử dụng hàm của mình như thế này:
console.log(func('3', '12345')); // sẽ in ra true
Một lập trình viên nào đó đã viết giải pháp cho bài toán này:
function func(needle, num) {
for (let digit of num) {
if (digit === needle) {
return true;
} else {
return false;
}
}
}
Tuy nhiên, giải pháp này hoạt động không chính xác.
Vấn đề là trong vòng lặp có điều kiện,
trong đó ngay ở lần lặp đầu tiên
sẽ thực thi hoặc là return này,
hoặc là return kia, do đó thực hiện
việc thoát khỏi cả vòng lặp lẫn hàm.
Hãy viết lại mã của chúng ta một cách chính xác, sử dụng cờ ngầm trong các hàm:
function func(needle, num) {
for (let digit of num) {
if (digit === needle) {
return true;
}
}
return false;
}