为什么1+{} 和 {}+1的结果会不一样,请教下
跟楼上无差别本意补充一下:
{} + 1
,按前后顺序进行解析,{}作为空代码块,所以相当于是 +1
,结果为 1
1 + {}
, 先解析到了二元运算符 +
,然后解析到{}
,那么就会进行valueOf
检测{}
,得到的并不是基本值类型,就会调用对象的toString
所以结果是 "1[object Object]"
楼上说的对,所以为了避免这种问题,你可以把字面量用括号括起来,这就一定是被当做对象字面量来了:
1 + ({}); // "1[object Object]"
({}) + 1; // "[object Object]1"
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答5.1k 阅读✓ 已解决
3 回答1.9k 阅读✓ 已解决
因为
{}
在表达式前,被解析成了代码块