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

Quando inserisco il seguente codice di consolare ho ottenuto true:Perché 0 === -0 è vero, ma 1/0 === 1/-0 è falso?

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

Ma quando faccio qualche calcolo con esso ho ottenuto false:

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

Perché è così?

+7

Perché 'Infinity' e' -Infinity' non sono uguali? – jonrsharpe

+0

@jonrsharpe, matematicamente parlando 1/0! = Infinito. Non è definito. –

+5

Non vedo un motivo davvero valido per fare downvoting su questa domanda. Sì, se provi '1/0' e' 1/-0' nella console, vedrai 'Infinity' e' -Infinity', e se guardi nelle specifiche, troverai che sebbene '0 'e' -0' sono considerati uguali, 'Infinity' e' -Infinity' no. Ma è un'area complessa, non sembra irragionevole chiederlo. –

risposta

7

Questo perché Infinity == -Infinity è falso, come per algoritmo di confronto di uguaglianza astratta.

1/0 produrrà Infinity allo stesso tempo 1/-0 Rendimenti -Infinity. Quindi entrambi non sono uguali e quindi restituiscono false.

Problemi correlati