Symbol là kiểu dữ liệu nguyên thuỷ tạo ra một giá trị duy nhất (unique).
Mỗi lần gọi Symbol() sẽ tạo ra một giá trị hoàn toàn khác biệt, ngay cả khi có cùng mô tả (description).
javascript
const sym1 = Symbol("foo");
const sym2 = Symbol("foo");
console.log(sym1 === sym2); // falseỨng dụng chính:
- Tránh xung đột tên thuộc tính: Thường dùng làm key cho object property để đảm bảo thư viện khác không ghi đè mất.
- Well-known symbols: Tuỳ biến hành vi mặc định của JS. Ví dụ: Symbol.iterator (định nghĩa object có thể lặp), Symbol.toPrimitive (tuỳ biến ép kiểu), Symbol.hasInstance.
Lưu ý: Symbol.for(key) tạo ra một global shared symbol. Khi đó Symbol.for("foo") === Symbol.for("foo") sẽ trả về true.