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

  • chrome.extension.getBackgroundPage () devuelve nulo después de un time
  • ¿Cómo verificar el valor vacío en Javascript?
  • getElementById () devuelve null aunque el elemento existe
  • Cómo volver a establecer el elemento localstorage en nulo.
  • Verificación nula de JavaScript
  • ¿Por qué localStorage no está definido, pero localStorage.getItem ("...") es nulo?
  • $ (document) .ready (function () no funciona perfectamente en las páginas de contenido / Telerik Controls
  • ¿Qué razón hay para usar null en lugar de indefinido en JavaScript?
  • ¿Por qué funciona String (null)?
  • cuánta memory asigna el nodo para valores nulos en matrices
  • ¿Qué causa jQuery "$ (...) es nulo" en algunas páginas?
  • por qué indefinido es un tipo de datos
  • No se puede leer la propiedad 'length' de null en javascript for loop
  • Javascript tiene muchos buenos JS marco (como Node.js AngularJS Vue.js React.js) es el mejor lenguaje de script.