Number.POSITIVE_INFINITY
là một hằng số và do đó không thể ghi đè lên, trong khi Infinity
là một tài sản của window
và ghi đè lên:
Number.POSITIVE_INFINITY = 123;
Number.POSITIVE_INFINITY; // Infinity
Infinity = 123;
Infinity; // 123
Đây là điều tương tự như undefined
hoặc NaN
, mà về cơ bản thuộc tính của window
và ghi đè lên . Nó không phải là một điều tốt để dựa trên window.undefined
hoặc; thay vào đó bạn muốn tự mình tạo ra một 'thực' 'undefined
(giống như trong một hàm tự thực hiện mà bạn không vượt qua một đối số nhưng khai báo nó trong hàm).
Specs:
15.7.3.6 Number.POSITIVE_INFINITY
Giá trị của Number.POSITIVE_INFINITY
là +∞
.
Thuộc tính này có các thuộc tính { [[Writable]]:
false
, [[Enumerable]]: false, [[Configurable]]: false }
.
Trong ES5, khả năng ghi đè lên đã bị xoá:
15.1.1: Các thuộc tính giá trị NaN
, Infinity
, và undefined
của Object toàn cầu đã được thay đổi để được chỉ đọc tài sản.
Về isFinite
: Tôi đã từng đăng tải một question là tại sao Library Đóng Google triển khai một chức năng tùy chỉnh cho isFinite
, và câu trả lời là có lẽ một số mâu thuẫn qua trình duyệt, mặc dù nó không rõ ràng mà trình duyệt và sự mâu thuẫn nào.
+1, tôi thích học điều gì đó mới – Joe
Nhưng, bạn không thực sự trả lời liệu 'Số.POSITIVE_INFINITY' có cùng kết quả là' Infinity' ngoài thực tế là 'Infinity' có thể thay đổi được trong các trình duyệt cũ hơn không. – jfriend00
@ jfriend00: Đó không phải là câu hỏi nếu tôi hiểu chính xác. Nó đang hỏi liệu có một lý do để sử dụng 'Number.POSITIVE_INFINITY' trên' Infinity', và lý do này là một lý do hợp pháp mà tôi nghĩ. – pimvdb