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

JavaScript中相等操作符的类型转换

2017-05-24 15:37 411 查看
不同类型的值用==操作符比较后的结果



toNumber和toPrimitive方法是内部的









文字描述及补充:
一、首先看双等号前后有没有NaN,如果存在NaN,一律返回false。
二、再看双等号前后有没有布尔,有布尔就将布尔转换为数字。(false是0,true是1)
三、接着看双等号前后有没有字符串, 有三种情况:
1、对方是对象,对象使用toString()或者valueOf()进行转换;
2、对方是数字,字符串转数字;(前面已经举例)
3、对方是字符串,直接比较;
4、其他返回false
四、如果是数字,对方是对象,对象取valueOf()或者toString()进行比较, 其他一律返回false
五、null, undefined不会进行类型转换, 但它们俩相等

例题:

1.var a = [3];
if(a){
alert(a==ture);
};//返回false
因为:a是对象,a.valueOf()是3。  true是布尔值,转换为数字是1。3不等于1,所以为false
2.alert(null == undefined); //返回true

3.console.log(([])?true:false); 

console.log(([]==false?true:false)); 

console.log(({}==false)?true:false)

得到的结果分别是什么?()// true true false

解析:引用类型转换成基本类型才能进行==运算;引用类型转换成布尔都是true;

第一个:[] 转成布尔,true。

第二个:

按照隐式转换规则:

[] == false 

=> [].valueOf() == false 

 => [].toString() == false 

=> "" == false 

=> true

第三个:

{} == false 

=> {}.valueOf() == false

 => {}.toString() == false 

=> "[object object]" == false 

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