Programming Track
JavaScript
Primitive Types
symbol
เรียนรู้ `symbol` สำหรับค่า unique ที่ไม่ซ้ำกัน ความหมายของ description และการตรวจชนิดด้วย `typeof`
symbol ใช้สร้างค่าที่ไม่ซ้ำกัน
`symbol` คือ primitive type สำหรับสร้างค่า unique ทุกครั้งที่เรียก `Symbol()` ค่าที่ได้จะไม่เท่ากับค่าอื่น แม้ description จะเหมือนกัน เหมาะกับกรณีที่ต้องการ key เฉพาะเพื่อไม่ให้ชนกับชื่ออื่นใน object แต่บทนี้จะดูเฉพาะพื้นฐานของความ unique ก่อน
Symbol สองตัวไม่เท่ากันJS
let firstId = Symbol("id");
let secondId = Symbol("id");
console.log(firstId === secondId); // false
console.log(typeof firstId); // "symbol"description เป็นแค่คำอธิบาย
ข้อความใน `Symbol("id")` เป็น description เพื่อช่วยอ่านและ debug ไม่ใช่ค่าที่ทำให้ symbol สองตัวเท่ากัน ให้จำว่า `Symbol()` สร้าง identity ใหม่เสมอ จึงไม่ควรใช้แทน string id ทั่วไปถ้าต้องการเทียบค่าจากข้อความ
description ไม่ใช่ตัวตนของ symbolJS
let orderKey = Symbol("order");
let anotherOrderKey = Symbol("order");
console.log(orderKey.description); // "order"
console.log(orderKey === anotherOrderKey); // false- `Symbol()` สร้างค่าใหม่ที่ unique เสมอ
- description ช่วยให้อ่านง่าย แต่ไม่ได้ทำให้ symbol เท่ากัน
- ใช้ `typeof value === "symbol"` เพื่อตรวจชนิด