isnan - string to number javascript
¿Es nulo considerado cero e indefinido, no un número en expresiones aritméticas? (3)
¿Se evalúa null en 0 y undefined en NaN en expresiones aritméticas?
Según algunas pruebas, parece que sí:
> null + null
0
> 4 + null
4
> undefined + undefined
NaN
> 4 + undefined
NaN
¿Es seguro o correcto suponer esto? (una cita de una documentación sería A +).
¿Se evalúa nulo en 0 y no está definido en NaN en expresiones aritméticas? ¿Es seguro o correcto suponer esto?
Sí lo es. Una "expresión aritmética" usaría la operación ToNumber :
Argument Type | Result
--------------+--------
Undefined | NaN
Null | +0
… |
Se usa en las siguientes expresiones "aritméticas":
- incremento y decremento de prefijo / postfijo
- los operadores unarios
+y- - el operador
+si ninguno de los dos argumentos es una cadena - operación de resta , multiplicación, división y módulo
- operadores relacionales si no ambos argumentos son cadenas
No es utilizado por los operadores de igualdad , por lo que null == 0 es falso (y null !== 0 todos modos)!
Parece seguro suponerlo ya que, en una expresión aritmética ( por ejemplo, adición ), se llamaría al método ToNumber , evaluando NaN y +0 desde undefined y null respectivamente:
To Number Conversions
╔═══════════════╦════════════════════════════════════════════╗
║ Argument Type ║ Result ║
╠═══════════════╬════════════════════════════════════════════╣
║ Undefined ║ NaN ║
║ ║ ║
║ Null ║ +0 ║
║ ║ ║
║ Boolean ║ The result is 1 if the argument is true. ║
║ ║ The result is +0 if the argument is false. ║
║ ║ ║
║ Number ║ The result equals the input argument (no ║
║ ║ conversion). ║
║ ║ ║
║ String ║ See grammar and note below. ║
║ ║ ║
║ Object ║ Apply the following steps: ║
║ ║ 1. Let primValue be ToPrimitive(input ║
║ ║ argument, hint Number). ║
║ ║ 2. Return ToNumber(primValue). ║
╚═══════════════╩════════════════════════════════════════════╝
Especificación del lenguaje ECMAScript - ECMA-262 Edition 5.1
Sin ser obligado a escribir,
null == false == 0
null !== false !== 0
http://www.mapbender.org/JavaScript_pitfalls:_null,_false,_undefined,_NaN#0_6
Dicho esto, null == 0 , null + 4 = 4
Espero que esto ayude.