js ==和===的区别

=====,其中===的使用是非常简单的,就是判断两者类型和值是否相同。

这篇文章主要来谈一下==

对于==来说,如果对比双方的类型不一样,就会进行「类型转换」。

对于x == y,我们会进行如下判断流程:

1、首先判断二者类型是否相同,相同的话就是比大小了。类型不相同,就会进行类型转换。

2、类型转换的时候,会先判断是否在对比nullundefined,如果是的话就返回true

==

3、如果是NumberString类型在对比,就会将字符串转换为Number

1 == '1'
// 转换为:
1 == 1

4、如果有一方是Boolean类型,就会把Boolean转为Number

'1' == true
// 转换为:
'1' == 1
// 转换为:
1 == 1

5、如果其中一方是Object类型另一方是StringNumber,就会把Object转为原始类型再进行判断,也就是执行x.toString()valueOf

'1' == { name: 'Andy'}
// 转换为:
'1' == '[object Object]'