javascript 的==是做相等比较,===是做相同比较。
参与比较的双方要么是值类型要么是引用类型。因此会分为3种情况:
1、两个值类型比较
2、值类型与引用类型比较
3、两个应用类型比较
对于==:
1的运算规则:转换成相同数据类型的值进行”数据等值“比较
2的运算规则:将引用类型的数据转换为与值类型数据相同的数据,再进行”数据等值“比较
3的运算规则:比较引用地址
var str = 123;
var str2 = "123";
var str3 = new String(str);
var str4 = new String(str2);
alert(str == str2);
alert(str == str3);
alert(str3 == str4);
分别返回true true false;
对于===:
1的运算规则:如果数据类型不同,必然不同,数据类型相同,再进行”数据等值“比较
2的运算规则:必然不同
3的运算规则:比较引用地址
var str = 123;
var str2 = "123";
var str3 = new String(str);
var str4 = new String(str2);
var str5 = "123";
alert(str === str2);
alert(str === str3);
alert(str3 === str4);
alert(str2 === str5);
分别返回false false false true;
参与比较的双方要么是值类型要么是引用类型。因此会分为3种情况:
1、两个值类型比较
2、值类型与引用类型比较
3、两个应用类型比较
对于==:
1的运算规则:转换成相同数据类型的值进行”数据等值“比较
2的运算规则:将引用类型的数据转换为与值类型数据相同的数据,再进行”数据等值“比较
3的运算规则:比较引用地址
var str = 123;
var str2 = "123";
var str3 = new String(str);
var str4 = new String(str2);
alert(str == str2);
alert(str == str3);
alert(str3 == str4);
分别返回true true false;
对于===:
1的运算规则:如果数据类型不同,必然不同,数据类型相同,再进行”数据等值“比较
2的运算规则:必然不同
3的运算规则:比较引用地址
var str = 123;
var str2 = "123";
var str3 = new String(str);
var str4 = new String(str2);
var str5 = "123";
alert(str === str2);
alert(str === str3);
alert(str3 === str4);
alert(str2 === str5);
分别返回false false false true;