2012-05-08 17 views
5

cos'è NaN, Object o primitivo?JavaScript: cos'è NaN, Object o primitivo?

NaN - Not a Number

+0

NaN è una proprietà della classe Number – rsplak

+1

'typeof NaN ==" numero "' –

+1

NaN è come NULL. è possibile fare riferimento questo [SO Post] [1] [1]: http://stackoverflow.com/questions/559792/what-is-the-reserved-keyword-for-nan -in-javascript –

risposta

4

NaN è un valore numerico primitivo. Proprio come 1, 2, ecc.

1

NaN è una proprietà dell'oggetto globale.

Il valore iniziale di NaN è Not-A-Number - lo stesso del valore di Number.NaN. Nei browser moderni, NaN è una proprietà non modificabile, non scrivibile. Anche se questo non è il caso, evitare di sovrascrivere lo .

È piuttosto raro utilizzare NaN in un programma. È il valore restituito quando le funzioni matematiche non riescono (Math.sqrt (-1)) o quando una funzione che tenta di analizzare un numero non riesce (parseInt ("blabla")).

Reference

8

E 'un primitivo. È possibile controllare in diversi modi: "oggetto"

  • typeof NaN dà "numero", non

  • Aggiungere una proprietà, scompare. NaN.foo = "hi"; console.log(NaN.foo) // undefined

  • NaN instanceof Number fornisce false (ma sappiamo che è un numero, quindi deve essere un primitivo).

Non avrebbe molto senso per NaN di essere un oggetto, in quanto espressioni come 0/0 devono risultare in NaN, e operazioni matematiche risultato sempre in primitive. Avere NaN come oggetto significherebbe anche che non potrebbe agire come un valore falso, che in alcuni casi lo fa.