Kiểu dữ liệu số trong JavaScript (Phần 3) - Khái quát về kiểu dữ liệu BigInt
Khóa học JavaScript cơ bản

Danh sách bài học
Kiểu dữ liệu số trong JavaScript (Phần 3) - Khái quát về kiểu dữ liệu BigInt
Dẫn nhập
Ở các bài trước, Kteam đã giới thiệu tới các bạn về Các thuộc tính và phương thức với kiểu dữ liệu Number trong Javascript.
Ở bài này, các bạn sẽ được biết thêm về một kiểu dữ liệu cơ bản khác trong Javascript – BigInt
Nội dung
Để nắm vững nội dung bài này, các bạn cần có kiến thức về:
- Kiểu dữ liệu số (Number) trong Javascript
Nội dung mà chúng ta sẽ được tiếp cận:
- Giới thiệu về kiểu dữ liệu BigInt
- Các đặc điểm của bigInt
Giới thiệu về bigint
Về cơ bản, BigInt cũng tương tự như number, đều là số. Nhưng giữa chúng có một sự khác biệt đáng kể.
Khởi tạo một bigint
Có hai cách để khởi tạo BigInt
- Cách 1: Thêm kí tự “n” vào phía sau một số nguyên.
a = 123n
// 123n
b = -1238884n
// -1238884n
c = 1.23n // Lỗi vì BigInt chỉ có thể là các số nguyên
// c = 1.23n
^^^^
// Uncaught SyntaxError: Invalid or unexpected token
- Cách 2: Sử dụng Constructor bigint
Cú pháp:
BigInt(<value>)
Yêu cầu:
- <value> phải là một giá trị nguyên, hoặc là một Number-String, hay có dạng một chuỗi giá trị hợp lệ.
Ví dụ:
a = BigInt(123)
// 123n
a = BigInt(-123884)
// -123884n
a = BigInt(1.23)
// Uncaught:
RangeError: The number 1.23 cannot be converted to a BigInt because it is not an integer
at BigInt (<anonymous>)
BigInt("0xf") // chuyển từ hệ hexa sang bigint
// 15n
typeof(a)
// 'bigint'
Đặc điểm của bigint
Đặc điểm cơ bản nhất của bigint là nó cho phép làm việc với các số nguyên mà không bị giới hạn về độ lớn. Ngoài ra, bigint cũng cho phép thực hiện hầu hết các toán tử giống như trong number.
a = 12345n
// 12345n
b = 5n
// 5n
a + b
// 12350n
a * b
// 61725n
a - b
// 12340n
a % b
// 0n
a ** b
// 286718338524635465625n
Lưu ý: Đối với phép chia, thì bigint sẽ cho kết quả khác với number (vì bigint chỉ cho phép số nguyên)
15n / 4n
// 3n
Bên cạnh đó, các toán tử so sánh cũng có thể được dùng một cách bình thường giữa number và bigint:
10n == 10
// true
11n < 9
// false
10n === 10n
// true
8n == 24/3
// true
Tuy nhiên, việc dùng các toán tử số học giữa bigint và number sẽ dẫn đến lỗi:
a = BigInt(100)
// 100n
a + 1
// Uncaught TypeError: Cannot mix BigInt and other types, use explicit conversions
a + 1n
// 101n
a * 2
// Uncaught TypeError: Cannot mix BigInt and other types, use explicit conversions
a * 2n
// 200n
a / 2
// Uncaught TypeError: Cannot mix BigInt and other types, use explicit conversions
Mở rộng:
Các toán tử trên bit cũng có thể được dùng trên bigint giống như là trên một number, ngoại trừ toán tử >>> (unsigned right shift operator)
Vì việc ép kiểu giữa các giá trị Number và giá trị BigInt có thể dẫn đến mất độ chính xác, nên:
- Chỉ sử dụng giá trị BigInt khi các giá trị lớn hơn 2 53 được mong đợi một cách hợp lý.
- Không ép kiểu giữa giá trị BigInt và giá trị Number.
Kết luận
Ở bài này, các bạn đã được làm quen với một kiểu dữ liệu mới: bigint
Bài tiếp theo, chúng ta sẽ cùng nhau tìm hiểu một kiểu dữ liệu mới: Bài tập về kiểu dữ liệu số trong Javascript
Cảm ơn các bạn đã theo dõi bài viết. Hãy để lại bình luận hoặc góp ý của mình để phát triển bài viết tốt hơn. Đừng quên “Luyện tập – Thử thách – Không ngại khó”.
Tải xuống
Tài liệu
Nhằm phục vụ mục đích học tập Offline của cộng đồng, Kteam hỗ trợ tính năng lưu trữ nội dung bài học Kiểu dữ liệu số trong JavaScript (Phần 3) - Khái quát về kiểu dữ liệu BigInt dưới dạng file PDF trong link bên dưới.
Ngoài ra, bạn cũng có thể tìm thấy các tài liệu được đóng góp từ cộng đồng ở mục TÀI LIỆU trên thư viện Howkteam.com
Đừng quên like và share để ủng hộ Kteam và tác giả nhé!

Thảo luận
Nếu bạn có bất kỳ khó khăn hay thắc mắc gì về khóa học, đừng ngần ngại đặt câu hỏi trong phần bên dưới hoặc trong mục HỎI & ĐÁP trên thư viện Howkteam.com để nhận được sự hỗ trợ từ cộng đồng.
Nội dung bài viết
Tác giả/Dịch giả
Khóa học
Nếu bạn đang muốn bắt đầu học JavaScript thì đây chính là khóa học dành cho bạn. Trong khóa học này, Kteam sẽ cung cấp cho những kiến thức cơ bản nhất của ngôn ngữ lập trình JavaScript.
Khóa học này không đòi hỏi kiến thức nền tảng nhiều, nên giả sử như bạn chưa biết gì về lập trình, bạn vẫn có thể tham gia. Do đó dù bạn có là một người trái ngành cũng có thể tiếp cận - Đồng thời bạn cũng không cần phải là một thiên tài toán học để tham gia khóa học này 😉.
Đánh giá
