javascript解析问题: {}+[] 与 {} +{}

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

RT,为什么第一项开头的{}被解析成块作用域,而第二项开头的{}没有被解析成块作用域。。

阅读 2k
3 个回答

可以参考的:http://www.cnblogs.com/ziyunf...

{}+[] 和 {}+{} 作为表达式和声明返回的结果是不一样的。
在声明中开头是{}才会被解析成块作用域。在表达式中都会被先valueOf()一下,再toString()一下。

同时,firefox下{}+{} 返回值为NaN,说明firefox也是把它当作声明来解析的。console.log({}+{})返回的就是"object Object"了,因为函数的参数是当作表达式来解析的。

至于chrome下,{}+{}返回值的原因,有可能是因为chrome把{}+{}解析成了一个表达式。
更具体的就不知道了,求采纳。

推荐问题
宣传栏