2012-05-08 18 views
5

¿Qué es NaN, Object o primitive?JavaScript: ¿qué es NaN, Object o primitive?

NaN - No es un número

+0

NaN es una propiedad de la clase de número – rsplak

+1

'typeof NaN ==" número "' –

+1

NaN es como NULL. puede consultar esta [SO Post] [1] [1]: http://stackoverflow.com/questions/559792/what-is-the-reserved-keyword-for-nan -in-javascript –

Respuesta

4

NaN es un valor numérico primitivo. Al igual que 1, 2, etc.

1

NaN es una propiedad del objeto global.

El valor inicial de NaN es Not-A-Number - el mismo que el valor de Number.NaN. En los navegadores modernos, NaN es una propiedad no configurable, no modificable. Incluso cuando este no es el caso, evite anulándolo.

Es bastante raro utilizar NaN en un programa. Es el valor devuelto cuando las funciones Math fallan (Math.sqrt (-1)) o cuando una función que intenta analiza un número falla (parseInt ("blabla")).

Reference

8

Es una primitiva. Se puede comprobar en un número de maneras:

  • typeof NaN da "número" y no "objeto".

  • Agregue una propiedad, desaparece. NaN.foo = "hi"; console.log(NaN.foo) // undefined

  • NaN instanceof Number da falso (pero sabemos que es un número, por lo que debe ser un primitivo).

No sería realmente tiene sentido para NaN a ser un objeto, porque las expresiones como 0/0 tienen que resultar en NaN, y las operaciones matemáticas siempre resulta en primitivas. Tener NaN como objeto también significaría que no podría actuar como un valor falsey, que lo hace en algunos casos.