JavaScript có 7 kiểu nguyên thủy, và mọi thứ khác (mảng, hàm, object) đều là object.
Các kiểu nguyên thủy: string, number, boolean, null, , , .
JavaScript có 7 kiểu nguyên thủy, và mọi thứ khác (mảng, hàm, object) đều là object.
Các kiểu nguyên thủy: string, number, boolean, null, , , .
undefinedbigintsymboltypeof "hi"; // "string"
typeof 42; // "number" (cả số nguyên và số thực)
typeof true; // "boolean"
typeof undefined; // "undefined"
typeof 10n; // "bigint"
typeof Symbol(); // "symbol"
typeof null; // "object" ← lỗi lịch sử nổi tiếng!
typeof {}; // "object"
typeof []; // "object" (mảng là object)
typeof function(){};// "function"
1. Kiểu nguyên thủy là bất biến và được sao chép theo giá trị; object được sao chép theo tham chiếu.
let a = 5; let b = a; b++; // a vẫn là 5 (bản sao độc lập)
let x = {n:1}; let y = x; y.n = 2; // x.n giờ là 2 (cùng một object!)
2. typeof null === "object" là một lỗi tồn tại lâu đời trong ngôn ngữ mà bạn phải nhớ — để kiểm tra null, hãy so sánh trực tiếp (x === null).
Hiểu được giá trị-so-với-tham-chiếu giải thích vì sao việc thay đổi một object dùng chung lại ảnh hưởng đến "cả hai" biến, vì sao {} === {} là false, và vì sao bạn phải sao chép object (spread) trước khi thay đổi chúng trong các UI điều khiển bởi state như React.