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

js中===和==的区别

2016-05-20 15:00 603 查看
最近看到一个问题,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>


== 的情况下,复杂类型会向基础类型转化
===还是会先比较类型的异同
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  javascript