เพื่อตรวจสอบตัวแปรว่า 'undefined' ต้องตรวจสอบดังนี้ หากผลลัพธ์เป็น "false" หมายถึงตัวแปรไม่ได้ถูกกำหนด ที่นี่ตัวแปรให้ผลลัพธ์ "True":
ตัวอย่าง
Live Demo
<html>
<body>
<script>
var points = 100;
if (points) {
document.write("True");
} else {
document.write("False");
}
</script>
</body>
</html>
วิธีที่ถูกต้องสำหรับ "not defined" (ไม่ได้ประกาศเลย)
// 1. ใช้ typeof - ไม่โยน ReferenceError
typeof myVar === 'undefined' // true ถ้าไม่ได้ประกาศ หรือ ประกาศแต่ไม่กำหนดค่า
// 2. ลอง catch ReferenceError (ไม่แนะนำ - ใช้ control flow ผิด)
try {
myVar; // ReferenceError ถ้ายังไม่ประกาศ
} catch (e) {
// not defined
}
// 3. ตรวจสอบใน global object (เฉพาะ global variables)
'myVar' in window // true ถ้ามี global variable ชื่อ myVar
window.hasOwnProperty('myVar') // true ถ้าเป็น own property ของ window
ความแตกต่าง: undefined vs not defined
| สถานะ | คำอธิบาย | typeof | การเข้าถึงโดยตรง |
|---|---|---|---|
| Declared, not initialized | var x; | "undefined" | undefined |
| Initialized undefined | var x = undefined; | "undefined" | undefined |
| Not declared | ไม่มีการประกาศ | "undefined" | ReferenceError |
สรุป: ใช้ typeof x === 'undefined' เพื่อตรวจสอบทั้ง "ไม่ได้ประกาศ" และ "ประกาศแต่ไม่ได้กำหนดค่า" อย่างปลอดภัย