问答

请教一个js的基础问题

作者:admin 2021-05-08 我要评论

为什么1+{} 和 {}+1的结果会不一样,请教下 ### 因为 {} 在表达式前,被解析成了代码块 ### 跟楼上无差别本意补充一下: {} + 1 ,按前后顺序进行解析,{}作为空代...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

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

###

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

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

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

###

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

1 + ({}); // "1[object Object]"
({}) + 1; // "[object Object]1"

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • 请教一个js的基础问题

    请教一个js的基础问题

  • 如何用python读取不规则格式中的数据?

    如何用python读取不规则格式中的数据?

  • golang接口的问题,某个类型要实现接口,

    golang接口的问题,某个类型要实现接口,

  • 求在xls中自动生成多行数据的方法

    求在xls中自动生成多行数据的方法

腾讯云代理商
海外云服务器