Number

W tym rozdziale dowiesz się...

Number

Number()
Number(value)
Parametry:
value - wartość do konwersji
Wartość:
skonwertowana prosta wartość liczbowa (nie obiekt)
Wyjątki:
TypeError - value nie posiada metody valueOf, zwracającej prostą wartość, ani metody toString

Konwertuje dowolną wartość na prostą wartość liczbową. W przypadku braku argumentów wywołania zwraca 0. Jeżeli konwersja będzie niemożliwa, zwracana jest wartość NaN. Jeżeli konwertowaną wartością jest obiekt dowolnego typu, najpierw wywoływana jest jego metoda valueOf, a jeśli zwrócona wartość nie jest typu prostego, następuje wywołanie metody toString i dopiero z niej wyznaczana jest ostateczna wartość liczbowa.

Inaczej niż konstrukcja new Number(...), nigdy nie tworzy nowego obiektu, a jedynie prostą wartość liczbową.

Różnica pomiędzy Number(...) a funkcją parseFloat(...) jest taka, że pierwsza z nich na końcu tekstu ignoruje tylko białe znaki, podczas gdy druga - wszystkie znaki niebędące poprawnym zapisem liczbowym.

Aby sprawdzić, czy funkcja nie zwróciła przypadkiem niepoprawnego wyniku, użyj funkcji isNaN.

Przykład:

Number();              // 0
Number(undefined);     // NaN
Number(null);          // 0
Number(true);          // 1
Number(false);         // 0
Number(new Boolean()); // 0
Number(0);             // 0
Number(1);             // 1
Number(-1.2);          // -1.2
Number(Infinity);      // Infinity
Number(new Number());  // 0
Number("test");        // NaN
Number(" +1.2 ");      // 1.2
Number("0xA");         // 10
Number("1 test");      // NaN
Number("false");       // NaN
Number(" ");           // 0
Number("");            // 0
Number(new String());  // 0
Number([]);            // 0   == Number("")
Number([0]);           // 0   == Number("0")
Number([1]);           // 1   == Number("1")
Number([1, 2, 3]);     // NaN == Number("1,2,3")
Number([true]);        // NaN == Number("true")
Number({});            // NaN == Number("[object Object]")
 
var obj = {};
obj.valueOf = undefined;
obj.toString = undefined;
Number(obj);           // TypeError

new Number

new Number()
new Number(value)
Parametry:
value - wartość na podstawie której zostanie utworzony obiekt
Wartość:
Number - nowa instancja obiektu liczbowego
Wyjątki:
TypeError - value nie posiada metody valueOf, zwracającej prostą wartość, ani metody toString

Działa analogicznie jak funkcja Number, ale zawsze tworzy nową instancję obiektu liczbowego, a nie tylko prostą wartość liczbową.

Przykład:

new Number();              // new Number(0)
new Number(undefined);     // new Number(NaN)
new Number(null);          // new Number(0)
new Number(true);          // new Number(1)
new Number(false);         // new Number(0)
new Number(new Boolean()); // new Number(0)
new Number(0);             // new Number(0)
new Number(1);             // new Number(1)
new Number(-1.2);          // new Number(-1.2)
new Number(Infinity);      // new Number(Infinity)
new Number(new Number());  // new Number(0)
new Number("test");        // new Number(NaN)
new Number(" +1.2 ");      // new Number(1.2)
new Number("0xA");         // new Number(10)
new Number("1 test");      // new Number(NaN)
new Number("false");       // new Number(NaN)
new Number(" ");           // new Number(0)
new Number("");            // new Number(0)
new Number(new String());  // new Number(0)
new Number([]);            // new Number(0)
new Number([0]);           // new Number(0)
new Number([1]);           // new Number(1)
new Number([1, 2, 3]);     // new Number(NaN)
new Number([true]);        // new Number(NaN)
new Number({});            // new Number(NaN)
 
var obj = {};
obj.valueOf = undefined;
obj.toString = undefined;
new Number(obj);           // TypeError

MAX_VALUE

Number.MAX_VALUE
Wartość:
Number - największa skończona dodatnia wartość liczbowa (ok. 1.7976931348623157 * 10308)

Zawiera największą skończoną liczbę, jaką można zapisać za pomocą typu Number. Tej wartości nie można zmienić ani nie będzie dostępna w pętli for-in.

Przykład:

Number.MAX_VALUE; // 1.7976931348623157e+308
Number.MAX_VALUE = 1;
Number.MAX_VALUE; // 1.7976931348623157e+308

MIN_VALUE

Number.MIN_VALUE
Wartość:
Number - najmniejsza skończona dodatnia wartość liczbowa (ok. 5 * 10-324)

Zawiera najmniejszą skończoną liczbę, jaką można zapisać za pomocą typu Number. Tej wartości nie można zmienić ani nie będzie dostępna w pętli for-in.

Przykład:

Number.MIN_VALUE; // 5e-324
Number.MIN_VALUE = 1;
Number.MIN_VALUE; // 5e-324

NaN

Number.NaN
Wartość:
Number - nie-liczba (ang. not-a-number)

Zawiera wartość NaN. Tej wartości nie można zmienić ani nie będzie dostępna w pętli for-in.

Number.NaN porównana do dowolnej innej wartości - w tym nawet do Number.NaN - zawsze zwraca false. Dlatego aby sprawdzić, czy wartość wynosi Number.NaN, należy użyć funkcji isNaN.

Przykład:

Number.NaN; // NaN
Number.NaN = 1;
Number.NaN; // NaN

NEGATIVE_INFINITY

<
Number.NEGATIVE_INFINITY
Wartość:
Number - ujemna nieskończoność

Zawiera wartość -Infinity. Tej wartości nie można zmienić ani nie będzie dostępna w pętli for-in.

Przykład:

Number.NEGATIVE_INFINITY; // -Infinity
Number.NEGATIVE_INFINITY = 1;
Number.NEGATIVE_INFINITY; // -Infinity

POSITIVE_INFINITY

Number.NEGATIVE_INFINITY
Wartość:
Number - dodatnia nieskończoność

Zawiera wartość Infinity. Tej wartości nie można zmienić ani nie będzie dostępna w pętli for-in.

Przykład:

Number.POSITIVE_INFINITY; // Infinity
Number.POSITIVE_INFINITY = 1;
Number.POSITIVE_INFINITY; // Infinity