LoạiDescriptionstringĐược sử dụng để biểu thị các chuỗisốĐược sử dụng để biểu thị số nguyên hoặc dấu phẩy độngbigintĐược sử dụng để biểu thị các số nguyên lớn hơn 253 - 1booleanĐược sử dụng để biểu thị đúng hoặc saikhông xác địnhĐược sử dụng để biểu thị một giá trị chưa được gánbiểu tượngĐược sử dụng để biểu thị các mã định danh duy nhấtnullĐược sử dụng để biểu thị sự vắng mặt có chủ ý của một giá trị
- Các loại không nguyên thủy
TypeDescriptionobjectĐược sử dụng để biểu thị cấu trúc dữ liệu phức tạp với một tập hợp các thuộc tính và phương thức
All JavaScript values, except primitives, are objects.
Giá trị có thể thay đổi là những giá trị có thể được sửa đổi sau khi tạo
Giá trị bất biến là những giá trị không thể sửa đổi sau khi tạo
Vì vậy, sự khác biệt cơ bản giữa nguyên thủy và không nguyên thủy là các giá trị nguyên thủy là bất biến và các giá trị không nguyên thủy có thể thay đổi và Nguyên thủy được lưu trữ theo giá trị trong khi [đối tượng] không nguyên thủy được lưu trữ theo tham chiếu
Điều quan trọng cần lưu ý ở đây là biến lưu trữ giá trị gốc vẫn có thể được gán lại một giá trị mới như trong Ví dụ 1, nhưng không thể thay đổi giá trị hiện tại như trong Ví dụ 2. Một giá trị nguyên thủy có thể được thay thế, nhưng nó không thể được thay đổi trực tiếp
ví dụ 1
let string = 'hello world'
string = 'this is a string';
console.log[string] // Output -> 'this is a string'
ví dụ 2
let string = 'this is a string'
string[0] = 'T'
console.log[string] // Output -> 'this is a string.'
Làm thế nào để các giá trị nguyên thủy như chuỗi có phương thức toUpperCase[]?
Có nhiều điều người ta muốn làm với các giá trị nguyên thủy [số, chuỗi, v.v. ] chẳng hạn như tìm độ dài của chuỗi, chuyển đổi chuỗi thành chữ hoa hoặc chữ thường, v.v.
Như vậy Javascript cho phép chúng ta làm việc với Primitive như thể chúng là các đối tượng. Để điều đó hoạt động, một "trình bao bọc đối tượng" đặc biệt cung cấp chức năng bổ sung được tạo ra để chúng ta có thể truy cập các phương thức đó và sau đó bị hủy sau khi hoàn thành công việc
Nguyên thủy ngoại trừ null và không xác định cung cấp nhiều phương pháp hữu ích
"Các trình bao bọc đối tượng" khác nhau đối với từng kiểu nguyên thủy và được gọi là. Chuỗi, Số, Boolean và Biểu tượng. Vì vậy, họ cung cấp các bộ phương pháp khác nhau
ví dụ 3
let str = "javascript";
console.log[ str.toUpperCase[] ]; // JAVASCRIPT
Trong Ví dụ 3 khi chúng ta truy cập thuộc tính của nó, một đối tượng đặc biệt được tạo có các phương thức hữu ích, như toUpperCase[]
Phương thức đó chạy và trả về một chuỗi mới. Sau đó
đối tượng đặc biệt bị hủy, để lại str nguyên thủy
Giá trị không nguyên thủy có thể thay đổi như thế nào
Ví dụ 4
let arr = [ 'one', 'two', 'three' ];
arr[0] = 'ONE';
console.log[arr] // Output -> [ 'ONE', 'two', 'three' ]
Trong ví dụ 4, chúng tôi đang thay đổi trạng thái của biến arr
và thay đổi giá trị của chính nó khi giá trị tại chỉ số 0 được thay đổi từ one
thành ONE
Loại toán tử
Toán tử typeof
trả về một chuỗi cho biết loại biến JavaScript
typeof "hello" // "string"
typeof 0 // "number"
typeof 1n // "bigint"
typeof true // "boolean"
typeof undefined // "undefined"
typeof Symbol["id"] // "symbol"
typeof {} // "object"
typeof null // "object"
Tại sao null là một đối tượng
Đây là một lỗi nói rằng null là một đối tượng và rất tiếc là không thể sửa được vì nó sẽ phá vỡ mã hiện có của mọi người