js中== ===的区别

js中== ===的区别

js是弱类型语言,这两个符号都是判断值是否相等的操作符,== 与 === ,两者相比,== 会做一定的类型转换;而 === 不做类型转换,所接受的相等条件更加严格。

等号==

 比较之前先进行隐式转换,类型相同与否无关,若类型一样,则和===比较一样进行严格比较。若不一样:

          若是undefined和null(注意:undefined和null属于两种基本数据类型),返回true。

          若一个是Number类型,一个是String类型,则把String类型转换成Number类型比较。如:"1" == 1;

          若有一个为Boolean类型,则把Boolean类型的值转换成Number类型的值来比较,Boolean(2) == 1;Boolean(2) == "1"; //ture

          若一个是Number类型或者String类型,一个是Object类型,先把Object类型转换成基本数据类型,再进行比较。

          注意:a == c; b==c; a == b?不一定,比如:

1                 var str1 = new String("Hello");
2                 
3                 var str2 = new String("Hello"); 
4                 str1 == "Hello"; 
5                 str2 == "Hello";
6                 alert(str1 == str2)            

 

恒等号===

首先判断两个值的类型是否相等,如果不相等,直接返回false:"1" === 1;

然后,如果类型相同:若是undefined和null,返回true。

          若是Number类型,(1)一般的数值相等返回true,(2)如果一个是NaN,则返回false,两个NaN返回true,(3)0 -0 +0返回true。

          若是String类型,完全相等时返回true。

          若是Boolean类型,相等时返回true。

          若两个变量引用的对象相同,返回true。

         
 1          function aa(name){
 2                     this.name = name;
 3                 }
 4                 var a1 = new aa("wo");
 5                 var a2 = new aa("wo");
 6                 var b = a1;
 7                 var c = a1;
 8                 alert(c === b);          //返回true
 9 
10                 alert(a1 == a2);              //返回false 
11           alert(a1 === a2);             //返回false 
12           alert(a1.name == a2.name);    //返回false 
13           alert(a1.name === a2.name);  //返回false            

 


 

posted @ 2016-03-24 10:21  siwenyu  阅读(413)  评论(0编辑  收藏  举报