在javascript判断两个变量值是否相等,可以使用 ==(等同)操作符 或者 ===(恒等)操作符。
== 操作符
“等同”操作符,简单判断2个变量值是否相等,变量类型不一致时,会做类型转换,即忽略变量的类型进行比较。
例子1
var str1 = "123456" ; // 字符串。
var str2 = "123456" ; // 字符串。
alert(str1==str2) ; // 打印出 true,即相等。
例子2
var str1 = 123456 ; // 整型。
var str2 = "123456" ; // 字符串。
alert(str1==str2) ; // 打印出 true,即相等。
差别:
在例子1中,2个变量都是字符串类型(因为有引号),所以比较相等,打印出true;
在例子2中,变量str1是整型,但是在做==比较时,javascript 发现 2个变量类型不一致,先做了类型转换(调用str1的toString方法,把str1转成字段串),再比较2者,因此值也相等,打印出true;
2. === 操作符。
“恒等”操作符,先比较2个变量类型是否一致,不一致返回false,一致时,再比较2个变量的值是否相等。
例子1
var str1 = "123456" ; // 字符串。
var str2 = "123456" ; // 字符串。
alert(str1==str2) ; // 打印出 true,即相等。
例子2
var str1 = 123456 ; // 整型。
var str2 = "123456" ; // 字符串。
alert(str1==str2) ; // 打印出 false,即不相等。
差别:
在例子1中,2个变量都是字符串类型,且值都相等,因此打印出true;
在例子2中,变量1是整型,变量2是字符串,类型不相等,因此打印出false ;。
判断对象相等的步骤:
1.先判断俩者是不是对象
2.是对象后俩者长度是否一致
3.判断俩个对象的所有key值是否相等相同。
4.判断俩个对象的相应的key对应的值是否相同。
来一个递归判断里面的对象循环1-4步骤代码如下:。
diff(obj1,obj2){。
console.log('obj12'+obj1,obj2)。
var o1 = obj1 instanceof Object;。
var o2 = obj2 instanceof Object;。
if(!o1 || !o2){/* 判断不是对象 */。
return obj1 === obj2;。
}
if(Object.keys(obj1).length !== Object.keys(obj2).length){。
return false;。
}
for(var attr in obj1){。
var t1 = obj1[attr] instanceof Object;。
var t2 = obj2[attr] instanceof Object;。
if(t1 && t2){。
return diff(obj1[attr],obj2[attr]);。
}else if(obj1[attr] !== obj2[attr]){。
return false;。
}
}
return true;。
}
在javascript判断两个变量值是否相等,可以使用 ==(等同)操作符 或者 ===(恒等)操作符<br><br> == 操作符<br>“等同”操作符,简单判断2个变量值是否相等,变量类型不一致时,会做类型转换,即忽略变量的类型进行比较<br>例子1<br>var str1 = "123456" ; // 字符串<br>var str2 = "123456" ; // 字符串<br>alert(str1==str2) ; // 打印出 true,即相等<br>例子2<br>var str1 = 123456 ; // 整型<br>var str2 = "123456" ; // 字符串<br>alert(str1==str2) ; // 打印出 true,即相等<br>差别:<br>在例子1中,2个变量都是字符串类型(因为有引号),所以比较相等,打印出true;<br>在例子2中,变量str1是整型,但是在做==比较时,javascript 发现 2个变量类型不一致,先做了类型转换(调用str1的tostring方法,把str1转成字段串),再比较2者,因此值也相等,打印出true;<br><br> 2. === 操作符<br> “恒等”操作符,先比较2个变量类型是否一致,不一致返回false,一致时,再比较2个变量的值是否相等<br>例子1<br>var str1 = "123456" ; // 字符串<br>var str2 = "123456" ; // 字符串<br>alert(str1==str2) ; // 打印出 true,即相等<br>例子2<br><br>var str1 = 123456 ; // 整型<br>var str2 = "123456" ; // 字符串<br>alert(str1==str2) ; // 打印出 false,即不相等<br>差别:<br>在例子1中,2个变量都是字符串类型,且值都相等,因此打印出true;<br>在例子2中,变量1是整型,变量2是字符串,类型不相等,因此打印出false ;。
一般使用双等来判断(==),如果还需要类型相同那么就用三等(===)。
说一下这两个的区别:
== equality 等同,=== identity 恒等。
==, 两边值类型不同的时候,要先进行类型转换,再比较。
==,不做类型转换,类型不同的一定不等。
下面分别说明:
先说 ===,这个比较简单。下面的规则用来判断两个值是否===相等:
1、如果类型不同,就[不相等] 。
2、如果两个都是数值,并且是同一个值,那么[相等]。
3、如果两个都是字符串,每个位置的字符都一样,那么[相等];否则[不相等]。
4、如果两个值都是true,或者都是false,那么[相等]。
5、如果两个值都引用同一个对象或函数,那么[相等];否则[不相等]。
6、如果两个值都是null,或者都是undefined,那么[相等]。
再说 ==,根据以下规则:
1、如果两个值类型相同,进行 === 比较。
2、如果两个值类型不同,他们可能相等。根据下面规则进行类型转换再比较:
a、如果一个是null、一个是undefined,那么[相等]。
b、如果一个是字符串,一个是数值,把字符串转换成数值再进行比较。
c、如果任一值是 true,把它转换成 1 再比较;如果任一值是 false,把它转换成 0 再比较。
d、任何其他组合,都[不相等]。
判断两个数组是否相等,可以通过循环遍历两个数组的数据,进行比较,如果有一个不相等则返回false,判断为不相等,如下方法:
public static boolean equals(Object[] a,Object[] b) { for (int i=0;i!=(a.length<b.length?a.length:b.length);i++) if (!a[i].equals(b[i])) return false; return true; }。