This comment has been minimized.
This comment has been minimized.
No Node.js 4.5 ou no Chrome/Chromium 53 (os ambientes que eu testei), tenho os seguintes resultados: > {} + {}
"[object Object][object Object]"
> ({} + {})
"[object Object][object Object]"
> eval('({} + {})')
"[object Object][object Object]"
> eval('{} + {}')
NaN Já no Firefox 49 tenho o seguinte: > {}+{}
NaN
> ({}+{})
"[object Object][object Object]"
> eval('{}+{}')
NaN
> eval('({}+{})')
"[object Object][object Object]" Entendo o resultado de O que não faz sentido pra mim, é Até falei sobre isso no nesse post: WAT JS - Mergulhando nos Comportamentos do JavaScript. Se alguém puder dar uma explicação, ficarei muito agradecido. |
This comment has been minimized.
This comment has been minimized.
acredito, @gabsprates que ele esteja fazendo um cast the No firefox é |
This comment has been minimized.
This comment has been minimized.
@felipenmoura então é provável que isso seja um comportamento do V8? Fiz um teste aqui, acho que o Chrome/Chromium e o Node não tratam esses blocos vazios. Parece que eles consideram objetos mesmo, isso no console. Se você tentar rodar Acredito que a questão é mesmo o V8 permitir esses objetos no contexto do console, uma vez que um arquivo block.js com o conteúdo |
This comment has been minimized.
This comment has been minimized.
> {}+{}
NaN
> ({}+{})
"[object Object][object Object]" é o comportamento válido, de acordo com a especificação. O problema de verificar esse código no console do browser é que ele encapsula o código e o |
This comment has been minimized.
Com o 'eval()` no Node.JS retorna o esperado :)