博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JS == 操作符的隐式转换,翻译ecma-262/5.1/#sec-11.6.1
阅读量:7029 次
发布时间:2019-06-28

本文共 688 字,大约阅读时间需要 2 分钟。

这里是原文

这里是翻译

a == b 符号的比较判断规则

  1. a和b是同类型
    1. a 是undefined or null, 返回true
    2. a 是number
      1. 只要a or b 是NaN, 返回false(包括a和b都是NaN的情况,a=NaN,b=NaN, a == b //false)
      2. a && b 都不是NaN, 则判断数值,相等true,不等false
    3. a 是string,则判断字符串长度以及每一个charAt(i)是否相等,相等为true,不等为false
    4. a 是boolean, 都是true或者false,返回true,否则返回false
    5. a 和b是同Object值,则如果引用地址不同,返回false,否则true
  2. a和b是null和undefined,则返回true
  3. a和b里一个是number,一个是string, 则将string转number,再从1开始判断
  4. a和b里一个是boolean,则将boolean转number,再从1开始判断
  5. a和b里一个是Object,一个是string/number,则将Object转原始值,再从1开始判断
  6. a和b都是Object,但是是不同原型的实例,则返回false

注:将Object转原始值的逻辑是

  • a or b 是Object
    1. 有[Symbol.toPrimitive](hint)方法
      • 返回原始值,则执行1
      • 否则throw error
    2. 调用valueOf,如果valueOf返回原始值,则执行1,否则往下判断
    3. 调用toString(), 如果toString返回原始值,则执行1, 否则throw error

转载地址:http://rjmxl.baihongyu.com/

你可能感兴趣的文章
rbac models
查看>>
[2615]传纸条 sdutOJ
查看>>
类图标注的使用范例
查看>>
NumberFormat注解 DateTimeFormat
查看>>
[转载]PV操作简单理解
查看>>
Acm Dima and Lisa的题解
查看>>
深入浅出Tomcat系列
查看>>
从网页提取的关键字
查看>>
位运算符
查看>>
PHP str_replace() 和str_ireplace()函数
查看>>
什么是全栈工程师
查看>>
Html5新特性
查看>>
linux下简易端口扫描器
查看>>
HDU 1205
查看>>
Openstack-L 路由注入方式
查看>>
利用ROS工具从bag文件中提取图片
查看>>
Java常用类库
查看>>
Android开发之Activity转场动画
查看>>
List集合三种遍历方法
查看>>
【译】OpenDaylight控制器:YANG Schema和Model
查看>>