2012-08-17 9 views
6

Duplicar posibles:
What is the explanation for these bizarre JavaScript behaviours mentioned in the 'Wat' talk for CodeMash 2012?¿Cómo puede {} + [] y [] + {} resultados serán diferentes

Podría alguien explicarme cómo Thees generando resultados pueden ser diferentes en javascript:

› {} + [] 
» 0 
› [] + {} 
» "[object Object]" 
+1

Debido a que es Javascript ... ¿quién dice que tiene que tener sentido? !! – Mehrdad

+6

['WAT'] (https://www.destroyallsoftware.com/talks/wat)? :) – Nemoden

+3

http://stackoverflow.com/questions/9032856/what-is-the-explanation-for-these-bizarre-javascript-behaviours-mentioned-in-the –

Respuesta

7

Esto se debe a la {} en el código es no un objeto literal, pero un bloque vacío.

Se analiza como:

{}; // empty block 
+ []; // this result is shown in the console 

Comparar con ({}) + [] que produce los mismos resultados que [] + {}; en este caso, el paréntesis fuerza el {} a tratar/analizar "en un contexto de expresión".

Hay un montón de duplicados de SO sobre este particular de doble naturaleza de {} (como una expresión o bloque?) Pero, la búsqueda de ellos puede ser algo difícil ..


He encontrado https://meta.stackexchange.com/questions/83911/how-do-i-search-stackoverflow-for-at-keywords-like-private-or-synthesize en Meta, y utilizando Symbolhound los duplicados "más cercanos" que pude encontrar resueltos alrededor de las preguntas like this (que se relacionan con la necesidad de agregar paréntesis cuando "evalúa JSON") o this (donde el uso de construcciones como "{} == falso "es un error de sintaxis).

si alguien sabe una mejor manera de buscar SO para esta pregunta especie, o tiene un enlace a un duplicado tales útil ..

+0

@ErikLandvall If encuentra algunos duplicados, solo vote para cerrar/vincular :) No elimine la pregunta, se cerrará como/si corresponde. –

+0

En realidad, encontrar los duplicados es el problema. Estoy seguro de que vi la misma pregunta en los últimos días, pero buscar '[]' no funciona demasiado bien. – nnnnnn

+0

Sí, tuve ese problema. Ahora solo estoy tratando de fusionarlos como dijo pst. http://stackoverflow.com/questions/9032856/what-is-the-explanation-for-these-bizarre-javascript-behaviours-mentioned-in-the – superhero

Cuestiones relacionadas