2011-01-18 11 views

Odpowiedz

149
if (result == Number.POSITIVE_INFINITY || result == Number.NEGATIVE_INFINITY) 
{ 
    // ... 
} 

Ewentualnie mógłby zamiast użyć funkcji isFinite, w zależności od tego, jak chcesz się leczyć NaN. isFinite zwraca false, jeśli Twój numer to POSITIVE_INFINITY, NEGATIVE_INFINITY lub NaN.

if (isFinite(result)) 
{ 
    // ... 
} 
+1

Idealny - dzięki! Homer. –

+2

Po co używać 'Number. (POZYTYWNY | NEGATYWNY) _INFINITY' zamiast' -? Infinity' lub '-? 1/0'? –

+3

@Eli: Globalna właściwość 'Infinity' nie jest tylko do odczytu, co oznacza, że ​​można ją ponownie zdefiniować: Na przykład' var x = 42; Infinity = 42; alert (x === Infinity); "wyświetla *" true "*. (Wprawdzie jest to niejasny przypadek i każdy, kto zdecyduje się na przedefiniowanie 'Infinity',' NaN' itp., Powinien spodziewać się dziwnych rzeczy.) – LukeH

9

Prosty n === n+1 lub n === n/0 utwory:

function isInfinite(n) { 
    return n === n/0; 
} 

mieć świadomość, że rodzimy isFinite() wymusza wejść do liczb. isFinite([]) i isFinite(null) są na przykład true.

2

Właściwie n === n + 1 będzie działać dla liczb większych niż 51-bitowe, np.

1e16 + 1 === 1e16; // true 
1e16 === Infinity; // false 
+2

To powinien być komentarz do odpowiedzi Ryanve'a. – Gary

4

W ES6, sposób Number.isFinite() określa, czy przekazany wartość jest skończona.

Number.isFinite(Infinity); // false 
Number.isFinite(NaN);  // false 
Number.isFinite(-Infinity); // false 

Number.isFinite(0);   // true 
Number.isFinite(2e64);  // true 
+0

[Dostępne] (https://www.w3schools.com/jsref/jsref_isfinite.asp) z ECMAScript 1 – MohaMad

Powiązane problemy