1.==相等运算符
1.1如果操作数具有相同的类型,则判断其等同性,如果两个数的值相等,则返回true(相等),否则返回 false (不相等)
1.2如果两个操作数类型不同,则按如下规则:
-
- null与undefined相等
- 其中一个是数字,另一个是字符串,则将字符串转为数字,在做比较
- 其中一个是true,先转化成1(false则转化为0) 在做比较
- 如果一个值是对象,另一个是数字或字符串,则将对象转化为原始值(通过toString()或valueOf()方法)
- 其他情况则直接返回false
2.===等同运算符
2.1如果操作数类型不同,则不进行值得判断,直接返回false
2.2如果操作数类型相同则按如下规则:
-
- 都是数字时,如果值相同则两者等同(例外:NaN与其本身不相等),否则不等同
- 都是字符串,如果串的值相等则等同,否则不等同
- 都是布尔值,且其值均为true/false,则等同,否则不等同
- 如果两个操作数引用同一对象,则两者完全等同,否则不等同
- 如果两个操作数均为null/undefined 则等同,否则不等同