Trong JavaScript, có hai giá trị về cơ bản nói rằng 'Tôi không tồn tại' - undefinedvà null.
Một thuộc tính mà một lập trình viên chưa gán bất cứ thứ gì sẽ là undefined, nhưng để một thuộc tính trở thành nullthì nullphải được gán rõ ràng cho nó.
Tôi đã từng nghĩ rằng cần có nullbởi vì undefinedlà một giá trị nguyên thủy và nullmột đối tượng. Nó không phải, ngay cả khi typeof nullsẽ mang lại 'object': Trên thực tế, cả hai đều là giá trị nguyên thủy - có nghĩa là cả hai đều undefinedkhông nullthể trả về từ một hàm tạo, vì cả hai sẽ được chuyển đổi thành một đối tượng trống (người ta phải ném một lỗi để thông báo lỗi trong các hàm tạo).
Cả hai đều đánh giá falsetrong ngữ cảnh boolean. Sự khác biệt thực sự duy nhất mà tôi có thể nghĩ đến là một cái đánh giá NaN, cái kia đánh giá 0trong ngữ cảnh số.
Vì vậy, tại sao lại có cả hai undefinedvà nullnếu điều này chỉ gây nhầm lẫn cho các lập trình viên, những người đang kiểm tra sai nullkhi cố gắng tìm hiểu xem một thuộc tính đã được thiết lập hay chưa?
Điều tôi muốn biết là nếu có ai có một ví dụ hợp lý cần thiết để sử dụng nullmà không thể diễn đạt bằng cách sử dụng undefinedthay thế.
Vì vậy, sự đồng thuận chung dường như có undefinednghĩa là 'không có tài sản đó' trong khi nullcó nghĩa là 'tài sản tồn tại, nhưng không có giá trị gì'.
Tôi có thể sống với điều đó nếu các triển khai JavaScript thực sự thực thi hành vi này - nhưng undefinedlà một giá trị nguyên thủy hoàn toàn hợp lệ, vì vậy nó có thể dễ dàng được gán cho các thuộc tính hiện có để phá vỡ hợp đồng này. Do đó, nếu bạn muốn chắc chắn rằng một thuộc tính có tồn tại hay không, bạn phải sử dụng intoán tử hoặc bằng hasOwnProperty()mọi cách. Vì vậy, một lần nữa: việc sử dụng thực tế cho các giá trị riêng biệt cho undefinedvà là nullgì?
Tôi thực sự sử dụng undefinedkhi tôi muốn bỏ đặt giá trị của các thuộc tính không còn được sử dụng nữa nhưng tôi không muốn delete. Tôi có nên sử dụng nullthay thế không?
In JavaScript, there are two values which basically say 'I don't exist' - undefined and null.Không, chỉ undefinednói vậy.
undefined.