Programming Track
JavaScript
Primitive Types
undefined
เรียนรู้ `undefined` ในฐานะค่าที่ยังไม่ถูกกำหนด วิธีตรวจด้วย `typeof` และความต่างจาก `null`
undefined คือค่ายังไม่ถูกกำหนด
`undefined` คือค่าที่ JavaScript ใช้เมื่อบางอย่างยังไม่มีค่าถูกกำหนด เช่น ประกาศตัวแปรไว้แต่ยังไม่ใส่ค่า โดยทั่วไปเราไม่ค่อยตั้งค่าเป็น `undefined` เอง แต่จะตรวจเพื่อรู้ว่าข้อมูลยังไม่พร้อม
ตัวแปรที่ยังไม่กำหนดค่าJS
let profileImage;
console.log(profileImage); // undefined
console.log(typeof profileImage); // "undefined"ใช้ typeof ตรวจ undefined ได้ปลอดภัย
ถ้าต้องตรวจว่าตัวแปรมีค่าเป็น `undefined` ใช้ `typeof value === "undefined"` ได้ชัดเจน เมื่ออยากสื่อว่า “ตั้งใจให้ไม่มีค่า” ให้ใช้ `null` แต่ถ้าค่าเกิดจากยังไม่ได้กำหนด JavaScript จะให้ `undefined`
แยก undefined กับ nullJS
let nickname;
let selectedUser = null;
console.log(typeof nickname === "undefined"); // true
console.log(selectedUser === null); // true- `undefined` มักเกิดจากค่ายังไม่ถูกกำหนด
- ใช้ `typeof value === "undefined"` เมื่อต้องตรวจชนิดนี้
- ถ้าต้องตั้งค่าว่างเอง ให้เลือก `null` เพื่อสื่อเจตนาให้ชัดกว่า
JavaScript คืน undefined ใน 3 สถานการณ์หลัก
`undefined` ไม่ได้เกิดแค่จากการประกาศตัวแปรโดยไม่ใส่ค่า JavaScript จะคืน `undefined` อัตโนมัติในอีก 2 กรณี คือ function ที่ไม่มี `return` และการเข้าถึง property ที่ไม่มีใน object
3 กรณีที่ได้ undefinedJS
// 1. ประกาศตัวแปรแต่ไม่ใส่ค่า
let score;
console.log(score); // undefined
// 2. function ที่ไม่มี return
function greet(name) {
console.log("Hello " + name);
}
let result = greet("Mali"); // พิมพ์ข้อความ แต่ไม่คืนค่า
console.log(result); // undefined
// 3. property ที่ไม่มีใน object
let user = { name: "Mali" };
console.log(user.age); // undefined- function ที่ไม่มี `return` จะคืน `undefined` เสมอ
- เข้าถึง property ที่ไม่มีใน object จะได้ `undefined` ไม่ใช่ error
- เห็น `undefined` ในผลลัพธ์ ให้ตรวจก่อนว่าลืม `return` หรือพิมพ์ชื่อ property ผิด