{}+[] //0
{}+{} //"[object Object][object Object]"
RT,为什么第一项开头的{}被解析成块作用域,而第二项开头的{}没有被解析成块作用域。。
{}+[] //0
{}+{} //"[object Object][object Object]"
RT,为什么第一项开头的{}被解析成块作用域,而第二项开头的{}没有被解析成块作用域。。
可以参考的:http://www.cnblogs.com/ziyunf...
{}+[] 和 {}+{} 作为表达式和声明返回的结果是不一样的。
在声明中开头是{}才会被解析成块作用域。在表达式中都会被先valueOf()一下,再toString()一下。
同时,firefox下{}+{} 返回值为NaN,说明firefox也是把它当作声明来解析的。console.log({}+{})返回的就是"object Object"了,因为函数的参数是当作表达式来解析的。
至于chrome下,{}+{}返回值的原因,有可能是因为chrome把{}+{}解析成了一个表达式。
更具体的就不知道了,求采纳。
8 回答4.5k 阅读✓ 已解决
6 回答3k 阅读✓ 已解决
5 回答2.6k 阅读✓ 已解决
5 回答6.2k 阅读✓ 已解决
4 回答2.2k 阅读✓ 已解决
3 回答2.4k 阅读
4 回答2.7k 阅读✓ 已解决
https://segmentfault.com/a/11...