== 相等
如果左右两个数据类型不同,先默认转换为相同的数据类型,然后再进行比较
- NaN == NaN //false
- null 和 undefined的两个等号比较是相等的,三个等号比是不想等的,除此之外他们和任何值比较都不想等
null == 0;// false
undefined == 0;// false
[10] == '10';// true
{} == '{}'; // false '[object Object]' == '{}'
1 == true; // true
2 == true; // false 2 == 1
-1 == false; // false
0 == false; // true
1 == '1' // true
true == '1' // true
false == '' // true 0 == 0
[] == 0; // true
- Symbol(1) == Symbol(1) //false
- 对象和对象比,比较的是内存地址
- 对象==字符串 对象转换为字符串
- 除上述规则外,其余都是把值转化为数字类型,然后再比较
=== 绝对相等
需要保证左右两边的数据类型和值都一样才会相等
Object.is ES6新增的方法
console.log(10 == "10");//TRUE
console.log(10 === "10");//FALSE
console.log("10" == "10");//TRUE