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;-)我想知道是否有重复的。有趣的是,我一直搜索“==”,没有得到任何结果。