2016-03-20 24 views
6
var a = 0; 
var b = -a; 

Khi tôi gửi đoạn mã sau để an ủi tôi đã true:Tại sao 0 === -0 là đúng, nhưng 1/0 === 1/-0 là sai?

console.log(a === b); // true 

Nhưng khi tôi làm một số tính toán với nó tôi đã false:

console.log(1/a === 1/b); // false 

Tại sao nó như vậy?

+7

Vì 'Infinity' và' -Infinity' không bằng nhau? – jonrsharpe

+0

@jonrsharpe, toán học nói 1/0! = Vô cực. Nó không xác định. –

+5

Tôi không nhìn thấy một lý do thực sự mạnh mẽ cho downvoting câu hỏi này. Có, nếu bạn thử '1/0' và' 1/-0' trong giao diện điều khiển, bạn sẽ thấy 'Infinity' và' -Infinity', và nếu bạn nhìn vào đặc tả, bạn sẽ thấy rằng mặc dù '0 'và' -0' được coi là bằng nhau, 'Infinity' và' -Infinity' thì không. Nhưng đó là một khu vực phức tạp, có vẻ như không hợp lý để hỏi về nó. –

Trả lời

7

Đó là vì Infinity == -Infinity là sai, theo thuật toán so sánh bình đẳng trừu tượng.

1/0 sẽ mang lại Infinity cùng một lúc 1/-0 Sản lượng -Infinity. Vì vậy, cả hai không phải là không bằng nhau và do đó trở về false.

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