js中===和==的区别

最近看到一个问题,js中===和==的区别

</pre><p>1、Number类型、String类型等基础类型</p><p>看下面一段代码</p><p></p><pre code_snippet_id="1690526" snippet_file_name="blog_20160520_2_9553485" name="code" class="javascript"><script type="text/javascript">
	var a = "1";
	var b = 1;
	alert(a==b);//true,转化同一类型后,比较值,
	alert(a===b);//false,首先比较类型的异同,其次比较值
</script>

  • ==会将俩边的变量转化为同一个类型,然后再比较值,如果相等则true,否则false
  • ===会先比较俩边变量的类型,如果不是同一类型则返回false,如果是同一类型则继续比较值

2、Array、Object等复杂类型之间的比较

<pre name="code" class="javascript"><script type="text/javascript">
	var arr1 = new Array("1");
	var arr2 = new Array("2");
	var arr3 = arr1;
	alert(arr1 == arr2); //false;对于高级类型来说,会比较地址,并且==和===都是相同的效果。
	alert(arr1 === arr2); //false
	alert(arr1 == arr3); //相同的地址,因此返回true
</script>

 

对于高级类型,==和===都会比较地址的异同

3、复杂类型和基础类型之间的比较

<script type="text/javascript">
	var arr1 = [1];
	var arr2 = [1,2];
	var num = 1;
	var str = "1";
	alert(arr1 === num); //false
	alert(arr1 == num); //true
	alert(arr1 == str); //true
	alert(arr2 == num); //false
	alert(arr2 == str); //false
</script>


== 的情况下,复杂类型会向基础类型转化

===还是会先比较类型的异同


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值