2011-12-15 22 views
18

Tôi hiểu rằng Number.POSITIVE_INFINITY có giá trị là InfinityNumber.NEGATIVE_INFINITY có giá trị là -Infinity.Infinity vs Number.POSITIVE_INFINITY

Có lý do nào tôi sẽ sử dụng Number.POSITIVE_INFINITY thay vì Infinity hoặc Number.NEGATIVE_INFINITY thay vì -Infinity?

Trên ghi chú có liên quan, có bất kỳ vấn đề nào về trình duyệt chéo với isFinite không?

Trả lời

17

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+∞.

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.

+4

+1, tôi thích học điều gì đó mới – Joe

+1

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

+1

@ 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

Các vấn đề liên quan