资讯专栏INFORMATION COLUMN

Javascripit类型转换比较那点事儿,双等号(==)

Steve_Wang_ / 804人阅读

摘要:同理,若为,返回的结果若为或者,且为,返回的结果。同理,若为或者,且为,返回的结果是对象转换基本类型的方法。看个例子根据上述规则来解析为,上式为第条上式为第条上式为,上式为第条上式为

前不久因为一个项目设计的问题,烦心了好几天,为了不留坑拥抱强类型语言特点,还是选择了"==="作为数据判断是否相等,对于"=="今天来探究一下猫腻(弱类型的JavaScript的坑真的太多了,typescript真香)

"==" 操作符

这个操作符相信学过开发的人完全不陌生,对于强类型语言我这儿就不做过多描述,咱们这儿就钻JavaScript的牛角尖

x == y,x,y都表示一个值,这个操作符返回的是bool值true或者false;

对于这个操作有相对应的比较方式(对于所有的JavaScript类型):

1.若type(x)和type(y)相同,则:
    a.若type(x)为undefined,返回true
    b.若type(x)为null,返回true
    c.若type(x)为number,则:
        i.若 x 为NaN,返回false
        ii.若 y 为NaN,返回false
        iii.若 x , y 为相同数值,返回true
        iv.若 x 为 +0且 y 为 -0,返回true
        v.若 x 为 -0且 y 为 +0,返回true
    d.若type(x)为string,则当 x , y 完全为相同字符序列的时候(长度和相同位置的字符一样)返回true
    e.若type(x)为boolean,当 x , y 同为true返回true,否则返回false
 2.若 x 为null且 y 为undefined,返回true
 3.若 x 为undefined且 y 为null,返回true
 4.若type(x)为number且type(y)为string,返回x == ToNumber(y)的结果
 5.若type(x)为string且type(y)为number,返回ToNumber(x) == y的结果
 6.若type(x)为boolean,返回ToNumber(x) == y的结果。同理,若type(y)为boolean,返回ToNumber(y) == x的结果
 7.若type(x)为string或者number,且type(y)为object,返回x == ToPrimitive(y)的结果。同理,若type(y)为string或者number,且type(x)为object,返回y == ToPrimitive(x)的结果

ToPrimitive是对象转换基本类型的方法。

看个例子:

[] == ![] // true
根据上述规则来解析:

1.![]为false,上式为: [] == false

2.第6条:上式为: [] == ToNumber(false) => [] == 0,

3.第7条:上式为:ToPrimitive([]) == 0,

4.[].toString() = "",上式为:"" == 0,

5.第4条:上式为:0 == 0 => true

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/100494.html

相关文章

  • javascript变量运算符详解

    摘要:代码示例等号检查,类型转换后返回全等检查,由于时类型,时类型,类型不同,返回关系运算符关系运算符执行的是比较运算,通常用于判断两个变量哪个大哪个小关系运算符都返回一个布尔值。逻辑或运输符用双竖线表示。 1.运算符 JavaScript中常见的运算符包含:赋值运算符、算数运算符、等性运算符、关系运算符、条件运算符、布尔运算符、逻辑运算符…… 1.赋值运算符 = 赋值运算符=,用于给某个变...

    Sourcelink 评论0 收藏0
  • js等号探索(三): [] == false为True,而!![] == false为False

    摘要:所以为为第二步转成根据文档比较操作符如果一个对象与数字或字符串相比较,会尝试返回对象的默认值。尝试将数字字面量转换为数字类型的值。 [] == false; //为True !![] == false; //为False 一、[] == false为True 第一步 转成[] == 0 根据 MDN Web 文档-比较操作符:https://developer.mozilla.org...

    DrizzleX 评论0 收藏0
  • js等号探索(一): [] == ![]为Ture ?

    摘要:所以为第四步转成根据文档比较操作符当比较数字和字符串时,字符串会转换成数字值。尝试将数字字面量转换为数字类型的值。最后位所以为其他链接 [] == ![] //为True 第一步 转成[] == false 根据 MDN Web 文档-运算符优先级:[https://developer.mozilla.org...](https://developer.mozilla.org...s...

    CollinPeng 评论0 收藏0
  • form表单那点事儿(下) 进阶篇

    摘要:在表单提交时,浏览器会自动进行一系列的校验工作,没有通过校验的表单是无法提交到服务器的。而方法提交表单,会在请求中发送表单字段键值对。表单提交事件表单提交到服务器时,会触发事件。 上一篇主要温习了一下form表单的属性和表单元素,这一片主要讲解用JavaScript如何操作form。 表单操作 取值 用JavaScript操作表单,免不了会有取值赋值操作,比如有以下表单: ...

    jerryloveemily 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<