javascript - 关于比较运算符==
本文介绍了javascript - 关于比较运算符==的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
<script>
var arr=[];
alert(arr==false);//true
var arr1=[1];
alert(arr==false);//false
alert(undefined==false);
</script>
哪位大神帮我解释一下,这里面进行了什么隐示转化,undefined和null在和其他类型进行比较时,会不会进行隐示转化
以上截图是怎样一个隐示转化,能不能解释一下
解决方案
1:undefined==null,且与其他类型比较时,都不会转化,即为false;
2:基本类型比较。向Number转。NaN不等于任何。
3:引用数据类型比较。比较指针地址。
4:2和3之间比较,引用数据类型会先调用valueOf()方法,再调用toString方法(已经是String则不调),然后调用Number()方法转为Number类型。需要注意的是Date类型会直接调用toString。
至于,你后面贴的图呢。
1:Number(true)是1.
oUl你可以试试oUl.valueOf().toString()一步一步看看是什么;
2:oUl!=undefined的结果其实还是由oUl==undefined的结果取反的出来的。也可以按照1的来自己试一试
////////////
另:其实有时候不是必须用==做判断,if(oUl)也能用,会把()内的隐式转换为布尔值。
这篇关于javascript - 关于比较运算符==的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文