JavaScript là một ngôn ngữ lập trình phổ biến được sử dụng rộng rãi trong phát triển web. Trong phiên bản ECMAScript 6 (ES6), JavaScript đã giới thiệu hai loại dữ liệu mới là Symbol và BigInt. Những tính năng mới này giúp lập trình viên thực hiện một số tác vụ một cách hiệu quả hơn và mở ra nhiều khả năng mới trong việc tối ưu hóa và bảo mật mã nguồn.
Symbol trong JavaScript
Symbol là một kiểu dữ liệu nguyên thuỷ mới, được sử dụng để tạo ra các giá trị duy nhất và không bao giờ trùng lặp. Mỗi giá trị thuộc kiểu Symbol là duy nhất, điều này có ý nghĩa quan trọng trong việc tránh xung đột tên trong các đối tượng.
-
Tạo Symbol mới: Để tạo một Symbol mới, ta sử dụng hàm
Symbol()
:let symbol1 = Symbol(); let symbol2 = Symbol('description');
-
Đặc điểm của Symbol:
- Tính duy nhất: Mỗi lần bạn gọi
Symbol()
, dù có cung cấp cùng một mô tả, kết quả trả về vẫn sẽ là một Symbol duy nhất.
console.log(Symbol() === Symbol()); // false console.log(Symbol('desc') === Symbol('desc')); // false
- Không thể thay đổi: Giá trị của Symbol là bất biến, tương tự như các kiểu dữ liệu nguyên thuỷ khác.
- Tính duy nhất: Mỗi lần bạn gọi
-
Sử dụng Symbol làm thuộc tính đối tượng: Symbol có thể được sử dụng làm khóa cho các thuộc tính của đối tượng, giúp tránh xung đột với các thuộc tính khác.
let mySymbol = Symbol('mySymbol'); let obj = { [mySymbol]: 'value' }; console.log(obj[mySymbol]); // 'value'
-
Symbol và tính ẩn: Các thuộc tính sử dụng Symbol không xuất hiện khi duyệt các thuộc tính của đối tượng.
let mySymbol = Symbol('mySymbol'); let obj = { [mySymbol]: 'value', normalKey: 'normalValue' }; for (let key in obj) { console.log(key); // chỉ in ra 'normalKey' }
BigInt trong JavaScript
BigInt là một kiểu dữ liệu mới, được giới thiệu trong ECMAScript 2020 (ES11), cho phép biểu diễn các số nguyệt lớn hơn và nhỏ hơn khả năng của kiểu Number trong JavaScript. Số nguyên BigInt không có giới hạn kích thước, điều này rất hữu ích khi làm việc với các phép toán cần độ chính xác cao hoặc các số lớn hơn 2^53 - 1, là giới hạn an toàn của kiểu Number.
-
Tạo BigInt: Có hai cách để tạo một BigInt:
- Thêm hậu tố
n
:let bigInt1 = 123456789012345678901234567890n;
- Sử dụng hàm BigInt():
let bigInt2 = BigInt("123456789012345678901234567890");
- Thêm hậu tố
-
Toán tử với BigInt: BigInt hỗ trợ hầu hết các toán tử thông thường, ngoại trừ toán tử
**
và phép toán kết hợp với kiểu dữ liệu Number.let bigInt1 = 10n; let bigInt2 = 20n; console.log(bigInt1 + bigInt2); // 30n
-
Chú ý về việc kết hợp BigInt và Number: JavaScript không cho phép kết hợp trực tiếp BigInt và Number trong cùng một phép toán, điều này nhằm tránh các lỗi tính toán không mong muốn.
let bigInt1 = 10n; let num = 5; // console.log(bigInt1 + num); // Lỗi TypeError
Tóm lại, cả Symbol và BigInt đều mang lại sự linh hoạt và mạnh mẽ cho lập trình viên khi làm việc với JavaScript. Symbol cho phép tạo các giá trị duy nhất để tránh xung đột tên, còn BigInt mở rộng khả năng làm việc với các số lớn. Cả hai tính năng này đều là những bổ sung quan trọng, góp phần nâng cao hiệu suất và tính bảo mật của ứng dụng.
Comments