Các kiểu dữ liệu trong JavaScript
Bài viết này giải thích các kiểu dữ liệu trong JavaScript.
YouTube Video
Các kiểu dữ liệu trong JavaScript
JavaScript có các kiểu dữ liệu để phân loại giá trị, có thể được chia làm hai loại chính: kiểu dữ liệu nguyên thủy và kiểu dữ liệu đối tượng. Kiểu dữ liệu xác định loại dữ liệu được lưu trong biến và ảnh hưởng đến cách sử dụng nó.
Các kiểu dữ liệu nguyên thủy
Kiểu dữ liệu nguyên thủy là những kiểu dữ liệu đơn giản đại diện cho một giá trị duy nhất. JavaScript có 7 kiểu dữ liệu nguyên thủy sau.
number
1let num = 42;
2let pi = 3.14;
3
4console.log("Value of num:", num);
5console.log("Value of pi:", pi);
number
là kiểu dữ liệu được sử dụng để xử lý các giá trị số, bao gồm số nguyên và số thập phân. Xử lý các giá trị vượt quá giới hạn nhất định sẽ dẫn đếnInfinity
hoặcNaN
(Không phải là số).
1// Decimal calculations
2console.log(0.1 + 0.2 === 0.3); // false
3console.log(0.1 + 0.2); // 0.30000000000000004
4
5// Calculations with large numbers
6console.log(9007199254740991 + 1); // correct value
7console.log(9007199254740991 + 2); // incorrect value
- Trong JavaScript, các số được biểu diễn dưới dạng số dấu phẩy động. Do đó, một số số thập phân (đặc biệt là những số không thể được biểu diễn chính xác trong hệ nhị phân) có thể không được biểu thị chính xác.
- Khi cần các phép tính chính xác, chẳng hạn như với các giá trị tiền tệ, cần phải tránh các lỗi làm tròn như vậy. Ví dụ, bạn có thể sử dụng
BigInt
hoặc điều chỉnh số chữ số thập phân bằng cách sử dụngtoFixed()
.
string
1let greeting = "Hello, world!";
2let char = 'A';
3const message = `"${greeting}" in JavaScript`;
4
5console.log("Value of greeting:", greeting);
6console.log("Value of char:", char);
7console.log("Value of message:", message);
string
là kiểu dữ liệu được sử dụng để xử lý văn bản, đại diện cho một chuỗi ký tự. Ký tự được biểu diễn bằng cách bao bọc văn bản bằng dấu nháy đơn ('
) hoặc nháy kép ("). Từ ES6 trở đi, chuỗi mẫu (template literals) cho phép dễ dàng nhúng biến bằng dấu backtick (
). Để nhúng một biến, sử dụng cú pháp${}
.
boolean
1let isAvailable = true;
2let hasError = false;
3
4console.log("Value of isAvailable:", isAvailable);
5console.log("Value of hasError:", hasError);
boolean
đại diện cho một giá trị logic và chỉ có hai giá trị:true
hoặcfalse
. Nó được sử dụng như kết quả của các biểu thức điều kiện hoặc làm một cờ hiệu (flag).
null
1let result = null;
2
3console.log("Value of result:", result);
null
là kiểu dữ liệu thể hiện rõ ràng không có giá trị.null
được thiết lập bởi lập trình viên để chỉ ra sự trống rỗng có chủ ý.
undefined
1let score;
2let subject = undefined;
3
4console.log("Value of score:", score); // undefined
5console.log("Value of subject:", subject);
undefined
là kiểu dữ liệu có nghĩa là 'chưa được định nghĩa'.undefined
được tự động gán khi một biến được khai báo nhưng chưa được gán giá trị.
bigint
1let bigIntValue = 9007199254740991n;
2let anotherBigInt = 123456789012345678901234567890n;
3
4console.log("Value of bigIntValue:", bigIntValue);
5console.log("Value of anotherBigInt:", anotherBigInt);
bigint
là một kiểu dữ liệu được sử dụng để xử lý các số nguyên lớn.bigint
cho phép biểu diễn chính xác các số nguyên lớn mà kiểunumber
không thể biểu diễn được. Các giá trị kiểubigint
được biểu diễn bằng cách thêm ký tựn
vào cuối một số.bigint
là một kiểu dữ liệu dùng để xử lý số nguyên với kích thước bất kỳ, không giới hạn phạm vi. Tuy nhiên,bigint
vànumber
không thể được thao tác trực tiếp với nhau, vì vậy cần phải cẩn thận.
Symbol
1let sym1 = Symbol('id');
2let sym2 = Symbol('id');
3
4console.log("sym1 === sym2:", sym1 === sym2); // false
Symbol
là một kiểu dữ liệu được sử dụng để tạo ra các định danh duy nhất.Symbol()
được sử dụng để tạo và có thể dùng làm thuộc tính của một đối tượng. Không giống như các kiểu dữ liệu nguyên thủy khác,Symbol
có giá trị duy nhất, nên dù nội dung giống nhau, chúng vẫn được coi là cácSymbol
khác nhau.
Các loại đối tượng
Các loại đối tượng là các cấu trúc dữ liệu có thể chứa nhiều giá trị. Một đối tượng là một tập hợp các cặp key-value và có thể có các thuộc tính và phương thức.
Object
1let person = {
2 name: "John",
3 age: 30,
4 isEmployee: true
5};
6console.log(person.name); // John
Object
là một tập hợp các thuộc tính (cặp key-value) có thể lưu trữ nhiều loại dữ liệu khác nhau. Các đối tượng được biểu diễn bằng dấu ngoặc nhọn{}
, và mỗi thuộc tính được kết nối bằng dấu:
giữa key và giá trị.
Array
1let numbers = [10, 20, 30];
2console.log(numbers[0]); // 10
3console.log(numbers[1]); // 20
4console.log(numbers[2]); // 30
5console.log(numbers[3]); // undefined
Array
là một danh sách chứa nhiều giá trị theo thứ tự. Mảng (Array) được biểu diễn bằng dấu ngoặc vuông[]
, và các giá trị được ngăn cách bằng dấu phẩy,
. Mỗi phần tử được truy cập bằng cách sử dụng chỉ số bắt đầu từ 0.
Function
1function greet(name) {
2 return "Hello, " + name;
3}
4console.log(greet("Alice")); // Hello, Alice
- Hàm (Functions) là một loại đối tượng và là các khối mã lệnh có thể tái sử dụng. Các hàm có thể được định nghĩa bằng từ khóa
function
.
Các loại đối tượng khác
- JavaScript cũng có các loại đối tượng tích hợp sẵn như
Date
,RegExp
,Map
, vàSet
. Chúng xử lý dữ liệu theo các trường hợp sử dụng cụ thể.
Chuyển đổi kiểu dữ liệu
Việc chuyển đổi kiểu dữ liệu ngầm định và rõ ràng thường xuyên xảy ra trong JavaScript.
Chuyển đổi kiểu dữ liệu ngầm định
- JavaScript có thể tự động chuyển đổi kiểu dữ liệu khi thực hiện các phép toán giữa các kiểu dữ liệu khác nhau.
1let result = 5 + "5"; // "55" (the number is converted to a string)
2
3console.log(result);
- Trong ví dụ này, số
5
được chuyển đổi ngầm định thành chuỗi, dẫn đến chuỗi"55"
.
Chuyển đổi kiểu dữ liệu rõ ràng
- Các nhà phát triển cũng có thể thực hiện chuyển đổi kiểu dữ liệu một cách rõ ràng.
1let num = "123";
2let convertedNum = Number(num); // Converts "123" to the number 123
3
4console.log(typeof num);
5console.log(typeof convertedNum);
- Trong ví dụ này, hàm
Number()
được sử dụng để chuyển đổi tường minh chuỗi"123"
thành số123
.
Kiểm tra kiểu dữ liệu
Trong JavaScript, bạn có thể sử dụng toán tử typeof
để kiểm tra kiểu dữ liệu của một biến.
1// Output: The type of 42 is: number
2console.log('The type of 42 is:', typeof 42);
3
4// Output: The type of 42 is: bigint
5console.log('The type of 42n is:', typeof 42n);
6
7// Output: The type of "hello" is: string
8console.log('The type of "hello" is:', typeof "hello");
9
10// Output: The type of true is: boolean
11console.log('The type of true is:', typeof true);
12
13// Output: The type of undefined is: undefined
14console.log('The type of undefined is:', typeof undefined);
15
16// Output: The type of null is: object
17console.log('The type of null is:', typeof null);
18
19// Output: The type of Symbol() is: symbol
20console.log('The type of Symbol() is:', typeof Symbol());
21
22// Output: The type of {} is: object
23console.log('The type of {} is:', typeof {});
24
25// Output: The type of function () {} is: function
26console.log('The type of function () {} is:', typeof function () {});
Kết luận
- Các kiểu dữ liệu nguyên thủy bao gồm
number
,string
,boolean
,null
,undefined
, vàsymbol
. - Các kiểu đối tượng bao gồm
Object
,Array
,Function
, và một số loại khác. - Vì cả chuyển đổi kiểu tự động và chuyển đổi kiểu tường minh đều xảy ra, điều quan trọng là phải hiểu cách sử dụng đúng của các kiểu dữ liệu.
Bạn có thể làm theo bài viết trên bằng cách sử dụng Visual Studio Code trên kênh YouTube của chúng tôi. Vui lòng ghé thăm kênh YouTube.