ในบริบท boolean (คำสั่ง if, &&, ||, !) ค่าทุกค่าจะถูกปฏิบัติว่าเป็น truthy หรือ falsy มีค่า falsy 8 ค่า เท่านั้น — ส่วนที่เหลือทั้งหมดเป็น truthy
ค่า falsy ได้แก่: , , , (BigInt zero), (string ว่าง), , ,
ในบริบท boolean (คำสั่ง if, &&, ||, !) ค่าทุกค่าจะถูกปฏิบัติว่าเป็น truthy หรือ falsy มีค่า falsy 8 ค่า เท่านั้น — ส่วนที่เหลือทั้งหมดเป็น truthy
ค่า falsy ได้แก่: , , , (BigInt zero), (string ว่าง), , ,
คลังคำถามสัมภาษณ์งาน IT พร้อมคำตอบโดยละเอียด — ตั้งแต่ระดับ Junior ถึง Senior
บริจาคfalse0-00n""nullundefinedNaNif ("") {} // skipped — empty string is falsy
if (0) {} // skipped
if ("0") {} // RUNS — non-empty string is truthy!
if ([]) {} // RUNS — empty array is truthy!
if ({}) {} // RUNS — empty object is truthy!
สิ่งที่น่าแปลกใจ: "0", [] และ {} เป็น truthy ทั้งหมด แม้ว่าพวกมันดูเหมือน "ว่าง"
const name = input || "guest"; // ❌ if input is "" or 0, falls back to "guest"
const count = input ?? 0; // ✅ ?? only falls back on null/undefined
|| ใช้ค่าสำรองสำหรับค่า falsy ใดๆ ดังนั้น 0 หรือ "" ที่ใช้ได้จึงถูกแทนที่ ตัวดำเนินการ nullish coalescing ?? ใช้ค่าสำรองเฉพาะ null/undefined ซึ่งมักเป็นสิ่งที่คุณต้องการจริงๆ
การรู้ชุด falsy ที่แน่นอนจะป้องกันจุดบกพร่องที่ละเอียดอ่อน — โดยเฉพาะการตรวจสอบตัวเลข (if (count > 0) ไม่ใช่ if (count)) และการเลือก ?? เทียบกับ || สำหรับค่าเริ่มต้น