"“是值之间的比较,而”="不仅是值之间的比较,也是类型之间转换
“==”:两边值类型相同时,直接进行转换,两边的值不同时,要先进行隐式类型转换(是要有一边是数值,就以数值运算),再进行比较。
1.如果一个数值是null,另一个是undefined,那么就相同。
2.如果一个是数值,另一个是字符串,将字符串转换成数值再进行比较。
3.如果一个是对象,另一个是数值或者是字符串,把对象转换成基础类型的值再进行比较。
4.如果值是true,将它转换成1再进行比较,如果是false,将它转换成0再进行比较。
“===”:不存在隐式类型转换,严格相等,除了值比较,还比较类型,如果两个值的类型不同,他们就不相同。
1.如果两个值都是true,或者都是false,那么他们就相同。
2.如果两个值都是数值,并且值相同,那么就相同。(如果其中一个是NaN,就不相同,NaN不会与其他值相同,包括它自身)
3.如果两个值引用同一函数、对象、数组,那么就相同,反之不相同。
4.如果两个值都是null或都是undefined,那么就相同。
5.如果两个都是字符串,每个位置的字符都一样,那么相等;反之不相同。
6.如果两个值都是null,或者都是undefined,那么相同。