类型转换之 ==
==
规则
1- 如果操作符左右两边是对象类型,当且仅当两者引用相同才相等
const object1 = {"key": "value"}
const object2 = {"key": "value"};
object1 == object2 // false
object2 == object2 // true
复制代码
2- =
null 和 undefined 比较相等,其他操作符一边是 null 或 undefined 一概不等
null == undefined // true
"0" == null; // false
"0" == undefined; // false
false == null; // false
false == undefined; // false
"" == null; // false
"" == undefined; // false
0 == null; // false
0 == undefined; // false
复制代码
3- =
操作符两边类型不同时,会在比较之前尝试转换类型,分三种情况
- 若一边是字符串,另一边是数字时,字符串会先转换为数字类型,Number()
"0" == 0; // true 复制代码
- 若含有操作数是Boolean类型时,true则转换为1,false转换为+0
false == NaN; // false false == 0; // true false == ""; // true 复制代码
- 若操作数是对象,另一操作数是数字或字符串时,对象则调用toString()或valueOf()方法转换为基础类型再比较
false == []; // true 0=='' false == {}; // false 0 == '[object Object]' Number()-----> 0 == NaN 复制代码
- 若操作数有相同的类型,比较规则如下
1.都是string类型时,当且仅当字符完全相同时相等''=='0' // false 复制代码
2.都是number类型时,当且仅当值相等,若一边有NaN,则为false,+0与-0相等
false == NaN; // false "" == NaN; // false 0 == NaN; // false 0 == -0 // false 复制代码
3.如果两者都是Boolean,当两边是true,或两边是false时相等
true == true // true false == false // true 复制代码
!
!
执行之前会先执行Boolean(x),得到false,则返回true,反之返回false
Boolean 的转换逻辑是:一下情况都为false,其他为trueundefiend,null,+0,-0,NaN,'',"".``,false 复制代码
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END