Javascript 为什么在布尔比较中有3个相等的符号?

Javascript 为什么在布尔比较中有3个相等的符号?,javascript,syntax,Javascript,Syntax,可能重复: 为什么我最近看到很多javascript代码的表达式如下所示: if(val === "something") 为什么“==”而不是“==”?有什么区别?什么时候应该使用一个或另一个?===不允许类型强制,因此类似这样的内容将返回false: if (2 === '2') // false “normal”javascript==运算符允许类型强制,因此这将返回true: if (2 == '2') // true 检查类型和值是否匹配。这很重要,因为(0==false)为t

可能重复:

为什么我最近看到很多javascript代码的表达式如下所示:

if(val === "something")

为什么“==”而不是“==”?有什么区别?什么时候应该使用一个或另一个?

===不允许类型强制,因此类似这样的内容将返回false:

if (2 === '2') // false
“normal”javascript==运算符允许类型强制,因此这将返回true:

if (2 == '2') // true

检查类型和值是否匹配。这很重要,因为(0==false)为true,但(0==false)为false。

==
通常被称为标识运算符。被比较的值必须是相同的类型,并且被认为是相等的值
=
通常被称为相等运算符,并执行类型强制以检查相等性

var a = 3;
var b = "3";

if (a == b) {
  // this is true.
}

if (a === b) {
  // this is false.
}
一个例子

1 == '1' // returns true even though one is a number, the other a string

1 === '1' // returns false. different datatypes

Doug Crockford在本文中简要介绍了这一点。值得花一个小时观看。

replicate:@mjv,你是说递归吗?:PMy。。我猜这是一个复制品的复制品。。。马修,记住在发布新问题之前一定要检查一下(和其他地方)。谢谢@布兰登!英雄联盟必须剪切/粘贴了错误的url;-)我想知道是否有重复的。有趣的是,我一直搜索“==”,没有得到任何结果。