您的位置:首页 > Web前端 > JavaScript

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

  

 

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: