优秀的编程知识分享平台

网站首页 > 技术文章 正文

【JS ==的转换规则】==符号运算符的转换规则

nanyue 2024-11-01 12:44:58 技术文章 3 ℃



==虽说在日常开发中不推荐使用,但在一些特殊场景下还是会出现,所以有必要了解转换规则

  • 两端都出现NaN,返回false
  • undefined和null,自身比较或者相互比较,结果都为true,和其他类型比较都是false
  • 两端类型相同,比较值
  • 两端都是原始类型的,转换数字比较
  • 对象类型先转原始类型,再比较

对于对象类型转原始类型,有重要三点需要记下

  1. 对象属性是否有[Symbol.toPrimitive],若该方法有原始类型值返回,则返回该原始值,没有原始值抛出报错
  2. 执行对象valueOf方法,若返回原始类型值,就返回该原始值,若没有,执行第三步
  3. 执行对象toString(),若返回原始类型值,就返回该原始值,若没有,则抛出报错


比较常见的疑问是 ![] 为什么 ==[]

根据以上规则

  1. ![] 布尔值 false,转数字为0
  2. []对象转原始值为空字符串'',空字符串转数字0
  3. 所以 ![] ==[]

Tags:

最近发表
标签列表