最近看到一个问题,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>
===还是会先比较类型的异同