js中关于==那点事

125 阅读1分钟

js 中的==判断规则 4 大规则:

1. undefined==null,这俩货和其他类型比较时都是 false,但是和对方比较就是 true

这一条死记硬背住就行,没有为啥,js 就是这么规定的。

2. 基本类型比较,两边都会先转化为 Number 类型后比较

各基础类型转 Number:

// Boolean
Number(true) = 1
Number(false) = 0

// String
Number('') = 0
Number(' ') = 0
Number('abc') = NaN
Number('abc123') = NaN
Number('0') = 0
Number('123') = 123

注意NaN不等于任何值,包括自己。

3. 引用类型比较,比较指针地址

这个比较好理解

4. 基本类型和引用类型比较,把引用类型转为基础类型再用第 2 条规则比较

引用类型会调用valueOf()方法,如果不是String类型再调用toString()方法,最终转成String类型后用第二条比较

ifwhile之类的如何判断true or false

其实就是通过Boolean强转的,Boolean可以强制转换任意值为 Boolean 类型,除了以下六个值,其他都是自动转为 true:

  1. undefined
  2. null
  3. -0
  4. +0
  5. NaN
  6. ''