2012-08-13 10 views
14

¿Alguien puede explicarme cómo se evaluaron los resultados de lo siguiente?Además de objetos y matrices

{} + {} // NaN 
[] + {} // "[object Object]" 
{} + [] // 0 
[] + [] // "" 
+1

Creo que '{} + []' es realmente '" 0 "' (una cadena) no '0' (un número). – DaoWen

+0

@DaoWen, en realidad es un Entero '0' – Adi

+0

no señor, es un número entero, pruébelo en la consola de cromos si quiere .. – Hilmi

Respuesta

13

Aquí hay una explicación completa de esto, check it.

y fichas{} + {} ser NaN si se ejecuta directamente en la consola porque {} se piensa de un bloque en lugar de un objeto.

({}+{}) debe ser '[object Object][object Object]'

El resultado real es:

console.log({}+{}) // '[object Object][object Object]' 
console.log([]+{}) // '[object Object]' 
console.log({}+[]) // '[object Object]' 
console.log([]+[]) // '' 
+0

¡Lo de "no se bloquea" es una gran atracción! ¡Gracias! – Adi

+0

Otro enlace para descripción: https://loomcom.com/blog/2015/06/29/the-wats-of-javascript/ – Arda

2

Adición de matrices con cualquier objeto y su representación de cadena siempre resulta en una unión

Por ejemplo:

[1] + [2] // is merged to "12", so [] + [] is an empty string "" 

Lo mismo es igual para su segundo ejemplo

['test'] + {} // "test[object Object]" 

lo tanto una matriz vacía, más un objeto vacío se acaba de devolver un [object Object]


para añadir a los objetos vacíos es fácil también:

Evaluar un objeto vacío simple: {} // results in undefined

Y agregar dos valores undefined es NaN porque no hay forma de que pueda agregarlos.

Nota: Los valores de retorno dependen de la implementación de JavaScript (es decir, en qué navegador o Medio Ambiente)

también: What is {} + {} in JavaScript?

0
{} + {} 

no se puede hacer una adición o cualquier operación en dos objetos

[] + {} // "[object Object]" 

es solo un concat entre una cuerda y un objeto, tiene la misma resu lt con alert({});

{} + [] // 0 

mismo

[] + [] // "" 

concat de dos cadena vacía = cadena vacía.

Cuestiones relacionadas