null
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
Từ khóa null đề cập đến giá trị nguyên thủy null, đại diện cho sự vắng mặt có chủ ý của bất kỳ giá trị đối tượng nào.
Try it
function getVowels(str) {
const m = str.match(/[aeiou]/gi);
if (m === null) {
return 0;
}
return m.length;
}
console.log(getVowels("sky"));
// Expected output: 0
Cú pháp
null
Mô tả
Từ khóa null là một literal cho giá trị null. Không giống như undefined, là một biến toàn cục, null không phải là định danh mà là một từ khóa cú pháp.
null có các hành vi sau:
- Giống như
undefined, truy cập bất kỳ thuộc tính nào trênnullsẽ ném raTypeErrorthay vì trả vềundefinedhay tìm kiếm trong chuỗi prototype. - Giống như
undefined,nullđược xử lý là falsy trong các phép toán boolean, và nullish cho nullish coalescing và optional chaining. - Kết quả của
typeof nulllà"object". Đây là một bug trong JavaScript không thể sửa do lo ngại tương thích ngược. - Không giống như
undefined,JSON.stringify()có thể biểu diễnnullmột cách trung thực.
JavaScript có điểm đặc biệt là có hai giá trị nullish: null và undefined. Về mặt ngữ nghĩa, sự khác biệt giữa chúng rất nhỏ: undefined đại diện cho sự vắng mặt của một giá trị, trong khi null đại diện cho sự vắng mặt của một đối tượng. Ví dụ, cuối cùng của chuỗi prototype là null vì chuỗi prototype được tạo thành từ các đối tượng; document.querySelector() trả về null nếu không tìm thấy kết quả khớp, vì nếu có kết quả khớp, kết quả sẽ là một đối tượng. Nếu bạn đang thiết kế API, bạn nên chấp nhận null và undefined như các đầu vào tương đương, vì nhiều codebase có các quy tắc phong cách về việc sử dụng null hay undefined theo mặc định.
Ví dụ
>Sự khác biệt giữa null và undefined
Khi kiểm tra null hoặc undefined, hãy chú ý đến sự khác biệt giữa toán tử bằng (==) và đồng nhất (===), vì cái trước thực hiện chuyển đổi kiểu.
typeof null; // "object" (not "null" for legacy reasons)
typeof undefined; // "undefined"
null === undefined; // false
null == undefined; // true
null === null; // true
null == null; // true
!null; // true
Number.isNaN(1 + null); // false
Number.isNaN(1 + undefined); // true
Thông số kỹ thuật
| Specification |
|---|
| ECMAScript® 2027 Language Specification> # sec-null-value> |