JavaScript中的==运算

JavaScript中==的运算

今天无意间在打开掘金时,看到一篇文章:一张图彻底搞定JavaScript中的==运算,文章的地址:一张图彻底搞定JavaScript中的==运算

文章中的图详细的讲解了各种类型之间==的转换,其中左右类型的==转换都会趋向于Number类型的转换

我们知道,JavaScript的数据类型分为两大类:原始类型(primitive)和对象类型(object)

  • 所有的对象都有valueOf和toString方法,他们都继承自object对象,可以被子类重写
  • undefined和null类型只有一个值,即其本身,number的值有很多,String的值理论上有很多

1、当string类型与number类型进行==运算时:
字符串会通过ToNumber (Number())操作进行转换,如果能将字符串转成合理数字,则返回数字,如果不能,则返回NAN;

x == y ---> Number(x) == y;
复制代码

字符串转化成数字的规则为:b按字符串两边的空白符去掉,然后在去掉两边的双引号,看他能否组成合理的数字,可以,则返回这个数字,反之,则返回NAN;

Number("456");   //456
Number("156ABC") //NAN
Number("\r\n\t123\v\f") //123
Number('');     //0
复制代码

2、boolean类型与number类型==运算 boolean只有两个值,为:true和false,其中他们转换成数字时为:true ---> 1,false ---> 0;

3、boolean类型与string类型==运算
boolean类型的值和string类型的值会分别先转化成数字类型,再进行比较

4、对象类型与原始类型之间的==运算

[''] == false;
复制代码

这是一个对象类型和原始类型布尔值之间的==运算,我们先将false转化成0

[''] == 0;
复制代码

下面将对象类型转换原始类型,其调用的过程为:

  • 首先会调用对象中的valueOf()方法,由于valueOf()返回的是本身的值,所以它还是对象类型
  • 那么此时它就会调用对象中的toString(),toString方法返回的是一个字符串类型,此时它为原始类型,那么转化后的值再会转化成数字类型与之比较,上面的结果会如下:
'' == 0;
0 == 0;  //true
复制代码

在要掌握==之间的运算规则,除了理解各类型之间的转化规则,还要理解valueOf()和toString()的规则。

下面引用文章中的一个图来做总结吧:

图中P:ToPrimitive N:ToNumber

  • undefined == null 其结果为true,这两个值与其他的==运算结果为false
  • string/boolean与number的==运算,都会先转换成number类型,在进行比较
  • string与boolean的==运算,两者都会先转化成number类型在比较
  • object类型的==运算,会x先转化成primitive类型

这篇文章是参考一张图彻底搞定JavaScript中的==运算而写的笔记,如果想要更详细的了解或者是更有逻辑的理解,请参考原文: 一张图彻底搞定JavaScript中的==运算

感谢您的阅读,希望你有所收获
这是作者首次写文章,如有不足,请谅解,并提出你宝贵的意见~~

转载于:https://juejin.im/post/5afaa3636fb9a07ac85a9171

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值