请教一个js的基础问题

为什么1+{} 和 {}+1的结果会不一样,请教下
image.png

阅读 1.9k
3 个回答

因为{}在表达式前,被解析成了代码块

跟楼上无差别本意补充一下:

{} + 1,按前后顺序进行解析,{}作为空代码块,所以相当于是 +1,结果为 1
1 + {}, 先解析到了二元运算符 + ,然后解析到{},那么就会进行valueOf检测{},得到的并不是基本值类型,就会调用对象的toString所以结果是 "1[object Object]"

楼上说的对,所以为了避免这种问题,你可以把字面量用括号括起来,这就一定是被当做对象字面量来了:

1 + ({}); // "1[object Object]"
({}) + 1; // "[object Object]1"
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题