Wartość NaN
#13Często w wyniku operacji arytmetycznych otrzymujemy wynik o wartości NaN
. Skrót pochodzi od wyrażenia not a number. Wartość tę możemy dostać na przykład poprzez podzielenie liczby przez stringa:
var i = 10;
var result = i / "foobar";
console.log(result); // NaN
Jak więc sprawdzić, czy rezultalt to NaN, by uniknąć dalszych błędów w aplikacji? Można użyć funkcji isNaN
:
isNaN(result); // true
Jest to problematyczne, o ile weźmiemy pod uwagę, że sprawdzana wartość będzie czymś innym niż NaN
:
isNaN({}); // true
Można temu zaradzić definiując własną funkcję do sprawdzenia, czy zmienna to NaN
. Otóż warto zauważyć, że NaN
jako jedyna wartość nie daje prawdy przy porównaniu do samej siebie:
result === result; // false
Na tej podstawie konstruujemy własną funkcję sprawdzającą, alternatywną do isNaN
:
var customIsNaN = function(i) {
return i !== i;
}