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
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
相关文章推荐
- javaScript笔记 (三) 数据类型转换 和 操作符、流程控制
- JavaScript 之 typeof 操作符 及 类型转换
- javascript中的类型转换,宽松相等于严格相等
- javascript 操作符类型隐性转换
- JavaScript进阶:js操作符类型转换
- JavaScript中的操作符类型转换示例总结
- javascript的类型转换,操作符介绍和运用
- Javascript的类型转换
- 《Effective C#》Item 3:使用as和is操作符来做类型转换
- javascript类型转换
- javascript中类型转换的实现
- 在JavaScript中也玩变量类型强行转换
- 在javascript里 string 和 int 类型得相互转换
- javascript入门·脚本执行的时间的四种类型(赠送一个转换的小例题)
- javascript数据类型转换
- javascript 数据类型转换
- 转:《Effective C#》Item 3:使用as和is操作符来做类型转换
- javascript入门·脚本执行的时间的四种类型(赠送一个转换的小例题)
- javascript:类型转换
- 类型转换操作符-2.提升