Tổng hợp các kiểu dữ liệu trong JavaScript

Javascript căn bản | by Học Javascript

Trong JavaScript, kiểu dữ liệu là một yếu tố cơ bản và quan trọng trong quá trình lập trình. Chúng quyết định cách mà các giá trị được lưu trữ và xử lý trong bộ nhớ của chương trình. Mỗi kiểu dữ liệu có các đặc điểm và phương thức sử dụng riêng, từ đó ảnh hưởng trực tiếp đến cách mà chương trình hoạt động. JavaScript cung cấp nhiều kiểu dữ liệu khác nhau, bao gồm kiểu dữ liệu nguyên thủy như số, chuỗi, boolean, null, undefined, và những kiểu dữ liệu tham chiếu như mảng, đối tượng, và hàm.

Việc hiểu rõ về các kiểu dữ liệu trong JavaScript không chỉ giúp lập trình viên viết mã hiệu quả hơn mà còn tránh được những lỗi thường gặp trong quá trình phát triển ứng dụng. Bài viết này sẽ giúp bạn tìm hiểu chi tiết về các kiểu dữ liệu trong JavaScript, từ đó có thể áp dụng chúng đúng cách trong các dự án lập trình của mình.

Giới thiệu về kiểu dữ liệu trong JavaScript

Khái niệm về kiểu dữ liệu

Kiểu dữ liệu (Data Type) trong JavaScript là một khái niệm dùng để phân loại giá trị mà một biến có thể lưu trữ. JavaScript là một ngôn ngữ có kiểu dữ liệu động (dynamically typed), nghĩa là một biến có thể chứa nhiều kiểu dữ liệu khác nhau trong suốt quá trình thực thi chương trình.

Ví dụ:

let x = 10;       // x là số
x = "Hello";      // x giờ là chuỗi
x = true;         // x giờ là kiểu boolean

Điều này giúp JavaScript trở nên linh hoạt nhưng cũng có thể dẫn đến các lỗi khó phát hiện nếu không xử lý cẩn thận.

Vai trò của kiểu dữ liệu trong JavaScript

  • Xác định cách lưu trữ và xử lý dữ liệu: Mỗi kiểu dữ liệu có cách lưu trữ và xử lý riêng biệt trong bộ nhớ.
  • Giúp kiểm soát và thao tác dữ liệu chính xác: Việc hiểu đúng kiểu dữ liệu giúp lập trình viên tránh lỗi logic khi làm việc với toán tử, vòng lặp, điều kiện.
  • Tối ưu hiệu suất chương trình: Khi biết cách chọn kiểu dữ liệu phù hợp, chương trình có thể chạy nhanh hơn và sử dụng bộ nhớ hiệu quả hơn.
  • Hỗ trợ phát triển các ứng dụng phức tạp: JavaScript cung cấp nhiều kiểu dữ liệu giúp xây dựng các ứng dụng web động và mạnh mẽ.

Phân loại các kiểu dữ liệu trong JavaScript

Trong JavaScript, các kiểu dữ liệu được chia thành hai nhóm chính: Kiểu dữ liệu nguyên thủy (Primitive types)Kiểu dữ liệu tham chiếu (Reference types).

Kiểu dữ liệu nguyên thủy (Primitive Types)

Đây là các kiểu dữ liệu đơn giản, được lưu trữ trực tiếp trong bộ nhớ và có giá trị bất biến. JavaScript có 7 kiểu dữ liệu nguyên thủy:

Number – Đại diện cho tất cả các số, bao gồm số nguyên và số thực.

let a = 10;
let b = 3.14;

String – Đại diện cho chuỗi ký tự.

let name = "John Doe";
let greeting = 'Hello, world!';

Boolean – Chỉ có hai giá trị true hoặc false, thường dùng để kiểm tra điều kiện.

let isActive = true;
let hasPermission = false;

Undefined – Một biến chưa được gán giá trị sẽ có kiểu undefined.

let value;
console.log(value); // undefined

Null – Đại diện cho một giá trị rỗng hoặc không tồn tại.

let data = null;

Symbol – Được dùng để tạo ra một giá trị duy nhất, thường dùng trong lập trình nâng cao.

let uniqueKey = Symbol("id");

BigInt – Được sử dụng để biểu diễn số nguyên lớn hơn Number.MAX_SAFE_INTEGER.

let bigNumber = 123456789012345678901234567890n;

Kiểu dữ liệu tham chiếu (Reference Types)

Đây là những kiểu dữ liệu phức tạp, lưu trữ địa chỉ tham chiếu đến giá trị trong bộ nhớ.

Object – Đại diện cho một tập hợp các cặp key-value.

let person = {
    name: "Alice",
    age: 25
};

Array – Danh sách có thể chứa nhiều giá trị khác nhau.

let numbers = [1, 2, 3, 4, 5];

Function – Hàm trong JavaScript cũng là một kiểu dữ liệu.

function sayHello() {
    console.log("Hello!");
}

Date – Đối tượng đại diện cho ngày và thời gian.

let today = new Date();

RegExp – Biểu thức chính quy, dùng để xử lý chuỗi.

let pattern = /abc/;

Kiểu dữ liệu nguyên thủy (Primitive Data Types) trong JavaScript

Trong JavaScript, kiểu dữ liệu nguyên thủy (Primitive Data Types) là những kiểu dữ liệu cơ bản và bất biến, tức là khi một giá trị thuộc kiểu nguyên thủy được gán cho một biến khác, JavaScript sẽ tạo một bản sao chứ không tham chiếu đến giá trị gốc.

Dưới đây là các kiểu dữ liệu nguyên thủy trong JavaScript:

Số (Number)

Định nghĩa và ví dụ sử dụng

Kiểu dữ liệu Number trong JavaScript đại diện cho tất cả các số, bao gồm cả số nguyên (integer) và số thực (floating-point).

let intNumber = 42;      // Số nguyên
let floatNumber = 3.14;  // Số thực
let negativeNumber = -10; // Số âm

JavaScript hỗ trợ một số giá trị đặc biệt trong kiểu Number:

  • Infinity – Đại diện cho một số vô cùng lớn.
  • -Infinity – Đại diện cho một số vô cùng nhỏ.
  • NaN (Not a Number) – Biểu thị một giá trị không phải số.

Ví dụ:

console.log(1 / 0);  // Infinity
console.log(-1 / 0); // -Infinity
console.log("hello" / 2); // NaN

Các phép toán với số

Các phép toán phổ biến trong JavaScript:

let a = 10;
let b = 4;

console.log(a + b); // Cộng: 14
console.log(a - b); // Trừ: 6
console.log(a * b); // Nhân: 40
console.log(a / b); // Chia: 2.5
console.log(a % b); // Chia lấy dư: 2
console.log(a ** b); // Lũy thừa: 10^4 = 10000

Chuỗi (String)

Định nghĩa và ví dụ sử dụng

Chuỗi (String) trong JavaScript là một tập hợp các ký tự được đặt trong dấu nháy đơn ('), dấu nháy đôi (") hoặc dấu backtick (``).

let name = "John";
let greeting = 'Hello';
let message = `Xin chào, ${name}!`; // Dùng template string
console.log(message); // "Xin chào, John!"

Cách thao tác với chuỗi

Nối Chuỗi
Có thể sử dụng toán tử + hoặc template literals để nối chuỗi:

let firstName = "John";
let lastName = "Doe";
let fullName = firstName + " " + lastName;
console.log(fullName); // "John Doe"

Tìm Kiếm Chuỗi
Có thể dùng phương thức .indexOf() hoặc .includes() để tìm kiếm chuỗi con:

let text = "Hello JavaScript!";
console.log(text.indexOf("JavaScript")); // 6
console.log(text.includes("Hello")); // true

Boolean

Định nghĩa và ví dụ sử dụng

Kiểu Boolean có hai giá trị true (đúng) hoặc false (sai).

let isOnline = true;
let hasPermission = false;
console.log(isOnline); // true
console.log(hasPermission); // false

Cách sử dụng trong các điều kiện

Giá trị Boolean thường được sử dụng trong các câu lệnh điều kiện:

let age = 18;

if (age >= 18) {
    console.log("Bạn đủ tuổi để lái xe.");
} else {
    console.log("Bạn chưa đủ tuổi để lái xe.");
}

Null

Định nghĩa và ví dụ sử dụng

null là một giá trị đặc biệt đại diện cho "không có giá trị". Một biến được gán giá trị null có nghĩa là nó không trỏ đến bất kỳ đối tượng nào.

let data = null;
console.log(data); // null

Sự khác biệt giữa nullundefined

Đặc điểm null undefined
Giá trị Không có giá trị, do lập trình viên gán Biến chưa được gán giá trị
Kiểu dữ liệu Object Undefined
let a;
console.log(a); // undefined

let b = null;
console.log(b); // null

Undefined

Định nghĩa và ví dụ sử dụng

undefined là giá trị mặc định của một biến chưa được gán giá trị.

let value;
console.log(value); // undefined

Sự khác biệt giữa undefinednull

  • undefined có nghĩa là biến chưa được khởi tạo.
  • null có nghĩa là biến đã được khởi tạo nhưng không có giá trị hợp lệ.

Symbol

Định nghĩa và ví dụ sử dụng

Symbol là một kiểu dữ liệu duy nhất, được sử dụng để tạo ra các giá trị duy nhất (unique).

let symbol1 = Symbol("id");
let symbol2 = Symbol("id");
console.log(symbol1 === symbol2); // false (vì mỗi Symbol là duy nhất)

Sự khác biệt của Symbol so với các kiểu dữ liệu khác

  • Mỗi Symbol là duy nhất, ngay cả khi chúng có cùng mô tả.
  • Không thể tự động chuyển đổi Symbol sang chuỗi.
let id = Symbol("id");
console.log(id.toString()); // "Symbol(id)"

BigInt

Định nghĩa và cách sử dụng với số lớn

BigInt được dùng để biểu diễn số nguyên lớn hơn Number.MAX_SAFE_INTEGER.

let bigNumber = 123456789012345678901234567890n;
console.log(bigNumber); // 123456789012345678901234567890n

Sự khác biệt giữa BigIntNumber

  • BigInt có thể biểu diễn số nguyên rất lớn.
  • Không thể sử dụng toán tử + giữa BigIntNumber.
let num = 10;
let bigIntNum = 20n;

console.log(num + bigIntNum); // Lỗi: Cannot mix BigInt and other types

Muốn thực hiện phép toán giữa NumberBigInt, cần chuyển đổi kiểu:

console.log(num + Number(bigIntNum)); // 30

Kiểu dữ liệu tham chiếu (Reference Data Types) trong JavaScript

Trong JavaScript, kiểu dữ liệu tham chiếu là các giá trị không được lưu trực tiếp trong bộ nhớ mà thay vào đó, biến sẽ chứa một địa chỉ tham chiếu đến giá trị đó. Điều này có nghĩa là khi gán một biến có kiểu dữ liệu tham chiếu cho một biến khác, cả hai biến sẽ cùng tham chiếu đến cùng một vùng nhớ.

Mảng (Array)

Khái niệm và ví dụ sử dụng

Mảng (Array) là một danh sách chứa nhiều giá trị, có thể thuộc bất kỳ kiểu dữ liệu nào. Các phần tử trong mảng được đánh số từ 0 (chỉ mục bắt đầu từ 0).

Ví dụ:

let numbers = [1, 2, 3, 4, 5]; // Mảng số
let fruits = ["Apple", "Banana", "Cherry"]; // Mảng chuỗi
let mixedArray = [10, "Hello", true, null, { name: "John" }]; // Mảng hỗn hợp

console.log(numbers[0]); // 1
console.log(fruits[2]); // "Cherry"
console.log(mixedArray[4].name); // "John"

Các phương thức cơ bản của Mảng

push() – Thêm phần tử vào cuối mảng

let arr = [1, 2, 3];
arr.push(4); 
console.log(arr); // [1, 2, 3, 4]
pop() – Xóa phần tử cuối mảng
let arr = [1, 2, 3];
arr.pop();
console.log(arr); // [1, 2]
shift() – Xóa phần tử đầu mảng
let arr = [1, 2, 3];
arr.shift();
console.log(arr); // [2, 3]
unshift() – Thêm phần tử vào đầu mảng
let arr = [1, 2, 3];
arr.unshift(0);
console.log(arr); // [0, 1, 2, 3]
length – Lấy độ dài của mảng
let arr = [1, 2, 3, 4, 5];
console.log(arr.length); // 5
indexOf() – Tìm chỉ mục của phần tử
let fruits = ["Apple", "Banana", "Cherry"];
console.log(fruits.indexOf("Banana")); // 1
console.log(fruits.indexOf("Grapes")); // -1 (Không tồn tại)
slice() – Cắt một phần của mảng
let arr = [1, 2, 3, 4, 5];
console.log(arr.slice(1, 4)); // [2, 3, 4]
splice() – Thêm hoặc xóa phần tử từ mảng
let arr = [1, 2, 3, 4, 5];
arr.splice(2, 1, "New"); // Xóa 1 phần tử tại vị trí 2 và thêm "New"
console.log(arr); // [1, 2, "New", 4, 5]

Đối tượng (Object) trong JavaScript

Định nghĩa và ví dụ sử dụng

Đối tượng (Object) là một tập hợp các cặp key-value, trong đó:

  • key (thuộc tính) là một chuỗi hoặc Symbol.
  • value có thể là bất kỳ kiểu dữ liệu nào.

Ví dụ:

let person = {
    name: "John",
    age: 30,
    isMarried: false,
    hobbies: ["Reading", "Traveling"],
    address: {
        city: "New York",
        zip: "10001"
    }
};

console.log(person.name); // "John"
console.log(person.hobbies[1]); // "Traveling"
console.log(person.address.city); // "New York"

Cách tạo và thao tác với đối tượng

Thêm hoặc cập nhật thuộc tính

person.job = "Engineer"; // Thêm thuộc tính mới
person.age = 31; // Cập nhật giá trị
console.log(person);
Xóa thuộc tính
delete person.isMarried;
console.log(person);
Duyệt các thuộc tính với for...in
for (let key in person) {
    console.log(`${key}: ${person[key]}`);
}
Kiểm tra thuộc tính tồn tại
console.log("age" in person); // true
console.log("salary" in person); // false

Chức năng (Function) trong JavaScript

Định nghĩa và ví dụ sử dụng

Chức năng (Function) là một khối mã có thể tái sử dụng, giúp tổ chức chương trình dễ dàng hơn.

Ví dụ:

function greet(name) {
    return `Hello, ${name}!`;
}

console.log(greet("Alice")); // "Hello, Alice!"

Function là đối tượng đầu tiên trong JavaScript

Trong JavaScript, Function cũng là một đối tượng. Điều này có nghĩa là có thể:

  • Gán function vào một biến.
  • Truyền function như một đối số cho function khác.
  • Trả về function từ một function.

Gán hàm vào biến

let sayHello = function(name) {
    return `Hello, ${name}!`;
};

console.log(sayHello("Bob"));

Truyền hàm làm đối số

function executeFunction(fn, value) {
    console.log(fn(value));
}

executeFunction(sayHello, "Charlie"); // "Hello, Charlie!"

Trả về một hàm

function multiplier(factor) {
    return function (number) {
        return number * factor;
    };
}

let double = multiplier(2);
console.log(double(5)); // 10

Kiểu dữ liệu và toán tử kiểu dữ liệu trong JavaScript

Trong JavaScript, việc kiểm tra và so sánh kiểu dữ liệu là rất quan trọng để đảm bảo chương trình hoạt động đúng cách. JavaScript cung cấp các toán tử giúp kiểm tra kiểu dữ liệu và hỗ trợ so sánh giữa các kiểu dữ liệu khác nhau.

Kiểm tra kiểu dữ liệu với toán tử typeof

Toán tử typeof trong JavaScript được sử dụng để xác định kiểu dữ liệu của một biến hoặc giá trị.

Cú pháp:

typeof variable;

Ví dụ:

console.log(typeof 42);            // "number"
console.log(typeof "Hello");       // "string"
console.log(typeof true);          // "boolean"
console.log(typeof undefined);     // "undefined"
console.log(typeof null);          // "object" (đây là một lỗi trong JavaScript)
console.log(typeof {});            // "object"
console.log(typeof []);            // "object"
console.log(typeof function() {}); // "function"

Lưu ý:

  • typeof null trả về "object", mặc dù null không phải là đối tượng. Đây là một lỗi trong JavaScript nhưng vẫn được giữ lại vì lý do tương thích ngược.
  • Mảng (Array) và đối tượng (Object) đều có kết quả là "object", nên để kiểm tra xem một biến có phải là mảng không, bạn nên sử dụng Array.isArray().

Kiểm tra mảng đúng cách:

let arr = [1, 2, 3];
console.log(Array.isArray(arr)); // true

So sánh các kiểu dữ liệu nguyên thủy và tham chiếu trong JavaScript

Đặc điểm Kiểu Dữ Liệu Nguyên Thủy Kiểu Dữ Liệu Tham Chiếu
Lưu trữ Lưu trực tiếp giá trị Lưu địa chỉ tham chiếu đến vùng nhớ
So sánh So sánh giá trị So sánh địa chỉ tham chiếu
Thay đổi giá trị Không làm thay đổi biến khác Thay đổi dữ liệu gốc nếu biến tham chiếu cùng vùng nhớ
Ví dụ Number, String, Boolean, Null, Undefined, Symbol, BigInt Object, Array, Function

Ví dụ về sự khác biệt:

// Kiểu dữ liệu nguyên thủy
let a = 10;
let b = a; // Sao chép giá trị
b = 20;
console.log(a); // 10 (Không bị thay đổi)
console.log(b); // 20

// Kiểu dữ liệu tham chiếu
let obj1 = { name: "Alice" };
let obj2 = obj1; // Tham chiếu đến cùng một vùng nhớ
obj2.name = "Bob";
console.log(obj1.name); // "Bob" (Bị thay đổi)
console.log(obj2.name); // "Bob"

Khi nào nên sử dụng kiểu dữ liệu nguyên thủy và tham chiếu?

  • Kiểu nguyên thủy: Dùng khi lưu trữ giá trị đơn lẻ, không cần thay đổi nội dung.
  • Kiểu tham chiếu: Dùng khi lưu trữ dữ liệu có cấu trúc (danh sách, đối tượng) và cần thay đổi nội dung động.

Phân biệt khi so sánh kiểu dữ liệu trong JavaScript (== vs ===) trong JavaScript

JavaScript có hai toán tử so sánh chính:

  • == (so sánh lỏng lẻo - Loose Equality): So sánh giá trị, tự động chuyển đổi kiểu dữ liệu nếu cần.
  • === (so sánh chặt chẽ - Strict Equality): So sánh cả giá trị và kiểu dữ liệu, không có sự chuyển đổi kiểu.

Ví dụ về sự khác biệt giữa == và ===

console.log(5 == "5");  // true  (JavaScript tự động chuyển đổi "5" thành số 5)
console.log(5 === "5"); // false (Kiểu dữ liệu khác nhau: số vs chuỗi)

console.log(null == undefined);  // true  (Do JavaScript coi chúng là tương đương)
console.log(null === undefined); // false (Kiểu khác nhau: null vs undefined)

console.log(0 == false);  // true  (0 được coi là false trong JavaScript)
console.log(0 === false); // false (Số và boolean là kiểu khác nhau)

console.log([] == false);  // true  (Mảng rỗng được ép kiểu thành `""`, rồi thành `0`)
console.log([] === false); // false (Kiểu khác nhau: mảng vs boolean)

Quy tắc khi so sánh kiểu dữ liệu

  • Luôn ưu tiên dùng === thay vì == để tránh các lỗi khó phát hiện.
  • Dùng typeof trước khi so sánh nếu không chắc về kiểu dữ liệu.
  • Cẩn thận khi so sánh với nullundefined, nên dùng ===.

Ví dụ: Kiểm tra giá trị hợp lệ trước khi so sánh

let input = "100";

if (typeof input === "number" && input === 100) {
    console.log("Giá trị hợp lệ");
} else {
    console.log("Giá trị không hợp lệ");
}

Chuyển đổi kiểu dữ liệu (Type Conversion) trong JavaScript

Trong JavaScript, kiểu dữ liệu của một giá trị có thể được chuyển đổi từ dạng này sang dạng khác. Có hai loại chuyển đổi kiểu dữ liệu:

  • Chuyển đổi kiểu dữ liệu tự động (Implicit Conversion - Type Coercion)
  • Chuyển đổi kiểu dữ liệu thủ công (Explicit Conversion - Type Casting)

Việc hiểu rõ các loại chuyển đổi này giúp lập trình viên kiểm soát tốt hơn cách JavaScript xử lý dữ liệu.

Chuyển đổi kiểu dữ liệu tự động (Implicit Conversion)

Chuyển đổi kiểu dữ liệu tự động xảy ra khi JavaScript tự động thay đổi kiểu của một giá trị để phù hợp với ngữ cảnh sử dụng. Điều này thường xảy ra trong các phép toán và so sánh.

Chuyển đổi chuỗi sang số

Khi thực hiện phép toán với chuỗi và số, JavaScript có thể tự động chuyển đổi chuỗi thành số nếu phép toán yêu cầu số học.

Ví dụ:

console.log("10" - 5); // 5  (Chuỗi "10" tự động chuyển thành số 10)
console.log("10" * 2); // 20 (Chuỗi "10" tự động chuyển thành số 10)
console.log("10" / 2); // 5  (Chuỗi "10" tự động chuyển thành số 10)
console.log("10" + 2); // "102" (Chuỗi + Số → Kết quả là chuỗi)

Lưu ý:

  • Phép + trong JavaScript ưu tiên nối chuỗi nếu có ít nhất một toán hạng là chuỗi.
  • Các toán tử -, *, / sẽ cố gắng chuyển đổi chuỗi thành số trước khi thực hiện phép toán.

Chuyển đổi số sang chuỗi

Nếu một số được sử dụng trong phép nối chuỗi, JavaScript sẽ tự động chuyển đổi số thành chuỗi.

Ví dụ:

console.log(5 + "5"); // "55" (Số 5 chuyển thành chuỗi "5", rồi nối với chuỗi "5")
console.log(true + " is a boolean"); // "true is a boolean"

Chuyển đổi boolean sang số và chuỗi

  • Boolean → Số: true được chuyển thành 1, false được chuyển thành 0.
  • Boolean → Chuỗi: truefalse được chuyển thành "true""false" khi nối chuỗi.

Ví dụ:

console.log(true + 1); // 2  (true → 1, rồi 1 + 1 = 2)
console.log(false + 1); // 1  (false → 0, rồi 0 + 1 = 1)
console.log(true + " is correct"); // "true is correct"

Chuyển đổi null và undefined

  • null được chuyển thành 0 khi sử dụng trong phép toán số học.
  • undefined trở thành NaN (Not-a-Number) nếu tham gia phép toán số học.

Ví dụ:

console.log(null + 5); // 5  (null → 0)
console.log(undefined + 5); // NaN  (undefined không thể chuyển thành số)

Chuyển đổi kiểu dữ liệu thủ công (Explicit Conversion)

Chuyển đổi kiểu dữ liệu thủ công giúp lập trình viên kiểm soát cách dữ liệu được chuyển đổi bằng cách sử dụng các phương thức có sẵn trong JavaScript.

Chuyển đổi sang số (Number)

Có thể chuyển đổi một giá trị về dạng số bằng cách sử dụng:

  • Number(value)
  • parseInt(value) (chuyển thành số nguyên)
  • parseFloat(value) (chuyển thành số thực)

Ví dụ:

console.log(Number("123")); // 123
console.log(Number("123.45")); // 123.45
console.log(Number("ABC")); // NaN (Không thể chuyển đổi chuỗi không chứa số)
console.log(parseInt("123.45")); // 123 (Chỉ lấy phần nguyên)
console.log(parseFloat("123.45")); // 123.45 (Lấy cả phần thập phân)
console.log(Number(true)); // 1
console.log(Number(false)); // 0
console.log(Number(null)); // 0
console.log(Number(undefined)); // NaN

Lưu ý:

  • parseInt() chỉ lấy phần nguyên của số.
  • parseFloat() giữ nguyên số thập phân.
  • Nếu chuỗi chứa ký tự không phải số ("123abc"), parseInt() chỉ lấy phần số (123), còn Number() trả về NaN.

Chuyển đổi sang chuỗi (String)

Có thể chuyển đổi giá trị sang chuỗi bằng cách sử dụng:

  • String(value)
  • value.toString()

Ví dụ:

console.log(String(123)); // "123"
console.log(String(true)); // "true"
console.log((123).toString()); // "123"
console.log((false).toString()); // "false"

Lưu ý: nullundefined không thể sử dụng .toString(), chỉ có thể dùng String(value).

Chuyển đổi sang boolean (Boolean)

Có thể chuyển đổi giá trị sang boolean bằng cách sử dụng Boolean(value).

Giá trị "falsy" (trả về false):

  • 0, -0
  • "" (chuỗi rỗng)
  • null, undefined
  • NaN

Giá trị "truthy" (trả về true):

  • Bất kỳ số nào khác 0
  • Bất kỳ chuỗi nào khác ""
  • true
  • Các đối tượng ({}, [])

Ví dụ:

console.log(Boolean(0)); // false
console.log(Boolean(1)); // true
console.log(Boolean("")); // false
console.log(Boolean("Hello")); // true
console.log(Boolean(null)); // false
console.log(Boolean(undefined)); // false
console.log(Boolean([])); // true
console.log(Boolean({})); // true

Quy tắc quan trọng

  • JavaScript có thể tự động chuyển đổi kiểu dữ liệu khi thực hiện phép toán hoặc so sánh.
  • + có thể nối chuỗi, còn các phép toán khác sẽ cố gắng chuyển đổi thành số.
  • Dùng Number(), String(), Boolean() để chuyển đổi thủ công thay vì dựa vào chuyển đổi tự động.
  • Hạn chế sử dụng ==, thay vào đó nên dùng === để tránh lỗi do chuyển đổi kiểu không mong muốn.

Kết bài

Kiểu dữ liệu đóng vai trò quan trọng trong JavaScript, giúp lập trình viên quản lý và xử lý dữ liệu hiệu quả. Việc hiểu rõ sự khác biệt giữa kiểu dữ liệu nguyên thủy (Primitive Types) và kiểu dữ liệu tham chiếu (Reference Types) giúp tránh những lỗi phổ biến khi so sánh, gán giá trị hoặc chuyển đổi kiểu dữ liệu.

Ngoài ra, việc sử dụng đúng kiểu dữ liệu trong từng tình huống giúp tối ưu hóa hiệu suất và đảm bảo tính nhất quán của chương trình. Bằng cách áp dụng các kiến thức về kiểu dữ liệu vào thực tế, như xử lý dữ liệu đầu vào từ người dùng, tính toán trong ứng dụng thương mại điện tử hoặc quản lý danh sách sản phẩm, bạn có thể xây dựng những ứng dụng web mạnh mẽ và chính xác hơn.

Hãy luôn kiểm tra kiểu dữ liệu bằng typeof, sử dụng so sánh chặt chẽ (=== thay vì ==), và hiểu rõ cơ chế chuyển đổi kiểu để tránh các lỗi không mong muốn. Nắm vững kiến thức này sẽ giúp bạn viết code JavaScript hiệu quả, tối ưu và dễ bảo trì hơn.

Bài viết liên quan

  • 2