js在进行比较时进行的隐式转换
2021-11-30 09:42
441 查看
js中不同的数据类型之间的比较转换规则
1.对象和布尔值比较
对象和布尔值进行比较时,对象先转换为字符串,然后在转换为数字,布尔值直接转换为数字
[] == true; // false [] 转换为'',然后转换为数字0,true转换为数字1,所以为false
2.对象和字符串比较
对象转换为字符串,然后两者在进行比较
[1, 2, 3] == '1,2,3' ; // true // [1, 2, 3] 转化为 '1,2,3' ,然后再和 '1,2,3' 比较,结果true
3.对象和数字比较
对象和数字进行比较时,对象先转换为字符串,然后转换为数字,再和数字比较
[1] == 1; // true // 对象先转换为字符串在转换为数字,二者在比较 [1] => '1' => 1
4.字符串和数字比较
字符串和数字进行比较时,字符串转换成数字在比较
'1' == 1; // true
5.字符串和布尔值比较
字符串和布尔值进行比较时,二者全部转换成数值再比较
'1' == true; // true '2' == true; // false
6.布尔值和数字比较
布尔值和数字进行比较时,布尔转换为数字,二者比较。
true == 1; // true
来个简单的图
如图,任意两种类型比较的时候,如果不是同一个类型比较的话,则按如图方式进行相应类型转换,
如对象和布尔比较的话:对象=>字符串=>数值 布尔值=>数值
看一个有趣的题
[] == false; ![] == false;
// 这两个结果都是true,第一个是:对象=>字符串=>数值0 false 转换为数字0
// 第二个前边多一个!,则直接转换为布尔值再取反,转换为布尔值时,空字符串 '', NaN, 0, null, undefined 这几个外返回的都是true,
// 所以 ![] 这个 []=> true 取反 false,所以 ![]== false 为true
undefined == null // true undefined和null比较返回true,二者和其他值比较返回false Number(null) // 0
相关文章推荐
- Scala使用隐式转换进行比较
- JS深入之趣味比较隐式转换(一)
- 【自学笔记】web前端 javascript笔试题 关于各种==的比较,js隐式转换
- '2'>'10'==true? JS是如何进行隐式类型转换的?
- JS实现两个时间进行比较
- JS的类型转换,强制转换和隐式转换
- 从一道面试题说起—js隐式转换踩坑合集
- js简单的隐式转换
- js基础:比较运算符隐式转换
- JS中的数字进行比较
- 测试两个类型是否可以进行隐式转换
- js数据类型隐式转换
- 前端面试 - js隐式类型转换特殊实例
- 使用js进行string和json之间转换的方法
- JS中比较特殊的隐性变量转换
- js里面日期进行比较
- js数据比较转换
- JS 浮点运算精度解决办法 (把小数转换为整数进行计算【但是不能超过js的整数上限】)
- js隐式转换isNaN(num)
- js引用类型和基本类型、隐式类型转换以及强制类型转换面试题