11

可能重复:
JavaScript === vs ==:我使用哪个“相等”运算符有关系吗?

===由于意外的类型转换,我可以理解为什么在比较数字、布尔值、空字符串等时是必要的,例如

var foo = 1; 
var bar = true; 
// bar == foo => true
// bar === foo => false

但是 在将变量与非空字符串==进行比较时会不会引入错误?在这种情况下使用over是否更有效?=====

4

4 回答 4

11

这已经在这里被问了很多,所以我会让一个更好的海报然后我自己回答。

看看这里: http: //longgoldenears.blogspot.com/2007/09/triple-equals-in-javascript.html

3个等号表示“没有类型强制的平等”。使用三等号,值的类型也必须相同。

0==假 // 真
0===false // false,因为它们是不同的类型
1=="1" // true,自动类型强制
1==="1" // false,因为它们是不同的类型

JavaScript 中 == 和=== 的区别

于 2012-08-08T13:16:14.453 回答
5

始终使用标识运算符 ( !==and ===) 并仅在需要时手动执行类型强制 (例如Boolean(someVar)or )是一种很好的做法Number(someVar)

一个有趣的小提琴

于 2012-08-08T13:16:26.107 回答
1

好吧,我自己回答了... 5 == "5",但是 5 !== "5",这可能是出乎意料的。不过,我会赞扬任何有更深入见解的人。

于 2012-08-08T13:14:24.020 回答
0

"==" 在比较完成之前进行类型转换。这就是为什么 5 == "5" 是真而不是假的原因。

而 "===" 则不进行这种转换,因此只要类型不同, 5 === "5" 就不同。

于 2012-08-08T13:17:56.480 回答