JavaScript nulo y plus (+) operatior

Estoy tratando de entender el núcleo de JavaScript. Sé que no tiene mucho valor de implementación. Si no quieres contestar, solo déjalo. Sin embargo, apreciaré si pudiera ayudar a comprender el siguiente tipo de coerción al aplicar la sum (+).

1. null + null // 0 2. null + undefined; // NaN 3. null + NaN; // NaN 4. 1 + null; //1 5. true + null; //1 6. true + [null]; //"true" 

Sé que null es un objeto vacío o perdido. Apreciaré, si puede explicar los pasos en tipo coerción o operación unaria (+) aquí. Gracias por leer la pregunta.

2 Solutions collect form web for “JavaScript nulo y plus (+) operatior”

Esto se trata en 11.6.1 El operador de adición (+) : siéntase libre de leerlo y de seguir las reglas.

Los primeros cinco casos pueden explicarse mirando ToNumber :

 Value ToNumber(Value) --------- --------------- null 0 undefined NaN NaN NaN 1 1 true 1 

Y 0 + 0 == 0 (y 1 + 0 == 1 ), mientras que x + NaN o NaN + x evalúa como NaN . Como cada valor anterior también es primitivo, ToPrimitive(x) evalúa como x (donde x no es una cadena) y la “cláusula de concatenación de cadenas” no se invocó.

El último caso es diferente en que resulta del ToPrimitive (que termina llamando a Array.prototype.toString ) en la matriz, lo que resulta en un valor de cadena . Por lo tanto, termina aplicando ToString , no ToNumber , y sigue como tal:

  true + [null] => true + "" // after ToPrimitive([null]) => "" => "true" + "" // after ToString(true) => "true" => "true" // via String Concatenation 

Conclusiones derivadas del análisis de resultados.

coerciones true a 1 (y false a 0).

null coerciones a 0.

undefined obliga a NaN.

Las matrices se comportan como:

  • bajo unario + ( +[] ):
    • su primer elemento si la longitud es 1
    • 0 si están vacíos
    • NaN si hay más de 1 elemento
  • bajo binario + ( 1+[] ):
    • obliga a ambos operadores a unirlos y los une

Todas las operaciones en NaN devuelven NaN

  • Cuándo verificar si está indefinido y cuándo verificar si es nulo
  • ¿Cuál es la diferencia entre nulo e indefinido en JavaScript?
  • ¿Cuál es el comportamiento de JavaScript de un valor nulo?
  • Comportamiento de expresión regular inesperado con /null/g.test('null null ')
  • ¿Por qué se debe anular el object para IE después de que fue document.getElementById-ed?
  • ¿Cómo son estos condicionales diferentes?
  • JavaScript - Comprobando si todos los valores en una matriz no son nulos - Array / Each /
  • ¿Qué razón hay para usar null en lugar de indefinido en JavaScript?
  • Use casos de Object.create (null)?
  • ¿Las llamadas a los methods de Javascript son seguras o sincronizadas?
  • Los valores de Line ChartJS empty / null no rompen la línea
  • Javascript tiene muchos buenos JS marco (como Node.js AngularJS Vue.js React.js) es el mejor lenguaje de script.