js中的奇言妙语之"+"

js中的奇言妙语之"+"

本文是由一张图片引发的思考,首先,请看图:
在这里插入图片描述
如果以上内容你全部答对,本文就没有阅读的必要了,当然了,如果有兴趣,也可以稍微看看。

知识说明

其实上面的式子主要涉及js中运算符+的理解。+在js中有两个作用:

  1. 作为一元运算符,用于显示地将操作数转化为数字
    在这里插入图片描述
  2. 作为二元运算符,对两个操作数做拼接操作。这里拼接有几个基本规则:
    a. 如果其中一个操作数是对象(数组),可以简单地理解为调用toString()方法。实际上是先对其调用ToPrimitive抽象操作该抽象操作再调用[[DefaultValue]],以数字作为上下文。
    b. 如果+的其中一个操作数是字符串(或者通过以上步骤可以得到字符串),则执行字符串拼接
    c.否则执行数字加法
题目解答
  • NaN是一个特殊的number,我理解为不是数字的数字,并且NaN==NaN返回值为false,是javascript中不等于自己的特殊值。
  • 整数精度到15位,小数到17位。
  • Math.max()返回参数中的最大值,有参数不能转化成数字则返回NaN,没参数,也就是返回默认的最小值-Infinitymin()同理。
  • []会被强制转换成""{}会被强制转换成[object Object]
  • {}+[]这里比较特殊,第一个{}会被当作空代码块,所以结果就。是+[]=>0
  • true1false0。但类型不同,一个为boolean,一个为number
  • -数字减法运算符,因此-a会做强制转换。
  • 最后说一下(!+[]+[]+![]).length,这道题比较有意思。
    首先根据上文的分析,+[](相当于+"")返回0;
    !可以理解为做boolean转化,所以!+[](相当于!0)返回true;
    ![]相当于!true(js中[]/{}都为true),返回false;
    所以!+[]+[]+![]可以转化成true+""+false,结果返回字符串"truefalse",所以对应的length为9。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值