Wartość NaN

varjs #13

Czę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;
}