ข้อผิดพลาดการไม่มีแฟล็กในฟังก์ชันใน 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;
}