2012-05-08 4 views
5

Was ist NaN, Objekt oder primitiv?JavaScript: Was ist NaN, Objekt oder primitiv?

NaN - Not a Number

+0

NaN ist eine Eigenschaft der Number-Klasse – rsplak

+1

'typeof NaN ==" number "' –

+1

NaN ist wie NULL. Sie können diese verweisen [SO Post] [1] [1]: http://stackoverflow.com/questions/559792/what-is-the-reserved-keyword-for-nan -in-javascript –

Antwort

4

NaN ist ein primitiver Zahlenwert. Genau wie 1, 2 usw.

1

NaN ist eine Eigenschaft des globalen Objekts.

Der Anfangswert von NaN ist Not-A-Number - das gleiche wie der Wert von Number.NaN. In modernen Browsern ist NaN eine nicht konfigurierbare nicht beschreibbare Eigenschaft. Auch wenn dies nicht der Fall ist, vermeiden Sie es zu übersteuern.

Es ist eher selten, NaN in einem Programm zu verwenden. Es ist der zurückgegebene Wert , wenn Math-Funktionen fehlschlagen (Math.sqrt (-1)) oder wenn eine Funktion versucht, parse eine Zahl fehlschlägt (parseInt ("blabla")).

Reference

8

Es ist eine primitive. Sie können in einer Reihe von Möglichkeiten prüfen: „Objekt“

  • typeof NaN gibt „Nummer“ nicht

  • Fügen Sie eine Eigenschaft hinzu, sie verschwindet. NaN.foo = "hi"; console.log(NaN.foo) // undefined

  • NaN instanceof Number gibt falsch (aber wir wissen, es ist eine Zahl, so muss es ein primitiv sein).

Es wäre nicht wirklich sinnvoll für NaN ein Objekt sein, weil Ausdrücke wie 0/0 in NaN führen müssen, und mathematischen Operationen führen immer in Primitiven. NaN als Objekt zu haben, würde auch bedeuten, dass es nicht als ein falscher Wert fungieren könnte, was es in einigen Fällen tut.