Định nghĩa
typeof operand trả về chuỗi chỉ kiểu dữ liệu của toán hạng. Là unary operator.
Bảng trả về
| Kiểu giá trị | typeof trả về |
|---|---|
| Number (kể cả NaN, Infinity) | "number" |
| String | "string" |
| Boolean | "boolean" |
| Undefined | "undefined" |
| Null | "object" ⚠️ |
| Function | "function" |
| Object (Array, Date, RegExp...) | "object" |
| Symbol (ES6) | "symbol" |
| BigInt (ES2020) | "bigint" |
Cạm bẫy nổi tiếng
typeof null === "object"; // true – bug từ phiên bản đầu, không sửa được vì break web
typeof [] === "object"; // true – mảng là object
typeof new Date() === "object"; // true
Phân biệt Object chi tiết
// Kiểm tra mảng
Array.isArray([]); // true
// Kiểm tra null
val === null; // chỉ cách tin cậy
// Kiểm tra object thuần (plain object)
Object.prototype.toString.call({}) === "[object Object]"; // true
Object.prototype.toString.call([]) === "[object Array]"; // true
Ví dụ thực hành
<script>
var a = 10, b = "String";
var result = (typeof b === "string") ? "B is String" : "B is Numeric";
document.write("Result => " + result); // "B is String"
</script>