是否有必要使用===比较Javascript中的字符串或者==足够?

Ale*_*xMA 9 javascript

可能重复:
JavaScript === vs ==:我使用哪个"相等"运算符是否重要?

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

var foo = 1; 
var bar = true; 
// bar == foo => true
// bar === foo => false
Run Code Online (Sandbox Code Playgroud)

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

Eri*_*son 8

这里有很多问题,所以我只想让一张更好的海报自己回答.

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

3个等号表示"没有类型强制的平等".使用三等于,值也必须在类型上相等.

0==false   // true
0===false  // false, because they are of a different type
1=="1"     // true, auto type coercion
1==="1"    // false, because they are of a different type

源代码 在JavaScript中==和===之间的差异


jba*_*bey 5

最好始终使用身份运算符(!=====)并仅在需要时手动执行类型强制(例如Boolean(someVar)Number(someVar)),这是一个好习惯。

一个有趣的小提琴