Symbol là kiểu dữ liệu nguyên thủy 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 không bị ghi đè bởi các thư viện khác.
- Well-known symbols: Tùy 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 (tùy 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.