Nullreference Q&A 编程技术问答社区
第一次访问本站?请查看 FAQ!
x
+4 投票
121 浏览

javascript 中的两种比较方法 == 和 === 有什么区别?

最新提问 5月 24, 2016 分类:JavaScript | 用户: xiaot (460 分) | 121 浏览

2 个回答

+1 投票

=== 三等号是严格相等,== 两等号是非严格相等。简单地说,两等号判等会在比较时进行类型转换;三等号判等不会进行类型转换(如果类型不同会直接返回 false )。

最新回答 5月 24, 2016 用户: alphago (700 分)
0 投票

=== 严格相等

两个被比较的值不会进行隐式类型转换,如果类型不同直接返回false。

var num = 0;
var obj = new String("0");
var str = "0";
var b = false;

print(num === num); // true
print(obj === obj); // true
print(str === str); // true

print(num === obj); // false
print(num === str); // false
print(obj === str); // false
print(null === undefined); // false
print(obj === null); // false
print(obj === undefined); // false

== 非严格相等

如果被比较的两个值的类型不同,在比较前会把类型转换为相同的,然后按照 === 比较的方式比较。

var num = 0;
var obj = new String("0");
var str = "0";
var b = false;

print(num == num); // true
print(obj == obj); // true
print(str == str); // true

print(num == obj); // true
print(num == str); // true
print(obj == str); // true
print(null == undefined); // true

// both false, except in rare cases
print(obj == null);
print(obj == undefined);
最新回答 5月 25, 2016 用户: Pikachu (430 分)