===
比较两个值并确保类型相同,而==
不关心类型。在书中,“JavaScript the good parts”==
被称为“邪恶的双胞胎”如果我不记得错了。
您是否可以在需要使用==
而不是===
时提供用例示例?
答案 0 :(得分:1)
如果您知道比较的类型相同,那么==
与===
相同,但为您保存一个字符。
例如,您可以typeof foo == 'function'
代替typeof foo === 'function'
,因为typeof
将始终返回字符串。
答案 1 :(得分:1)
正如您所指出的,==
比较了两个对象的值,而===
也比较了这个类型。
弱类型的问题在于,您无法始终100%确定变量的类型。例如,您可能希望从字符串中提取数字。随着代码变得越来越复杂,跟踪代码中哪些类型的变量变得越来越困难。
所以来==
。 "1" == 1
返回true,但"1" === 1
没有。这通常是件好事。虽然最终是个人选择要使用哪个运营商的问题,但普遍接受的用法是默认情况下使用==
,而===
则仅限于此。
答案 2 :(得分:0)
如果要同时检查值和类型,请使用===
。如果您只想检查值,请使用==
答案 3 :(得分:0)
因为你特别要求举例,而不是解释......我===
最常见的用例是这样的:
function isFoo(val) {
if(val) // checks val 'exists'
{
return (val == 'foo'); // returns true or false
}
//'returns' undefined
}
var checkResult = isFoo('bar');
if(checkResult === true) {
alert('The value is foo');
}
else if(checkResult === false) {
alert('The value exists, but is not foo');
}
else { // result was undefined
alert('No value was provided, or it was null/undefined/false');
}
这是一种懒惰的方式,但它的效果非常好。在实践中,通常您很少需要来使用==
,您更有可能需要来使用===
。
答案 4 :(得分:0)
使用===
和!==
运算符几乎总是更好。
==
和!=
运算符会为例如输入强制类型。他们会强制将一个字符串作为数字进行评估。
在===
的情况下,由于字符串“1”与数值1不同,因此结果为false。
另见this。
答案 5 :(得分:0)
你的问题,强调我的:
...当您需要使用
==
代替===
时,您能举例说明用例吗?
这是一个加载的问题。您可以通过将==
与其他代码相结合来模拟===
,只要您能够这样做,您就永远不会“需要”==
。这有点像要求您“需要”++
的情况,可能是因为您更愿意将其写为foo += 1
。
你的标题提出了一个更实际的问题:
什么时候在js中使用==而不是===?
每当您发现自己使用==
模仿===
的行为时,您应该只使用==
。这包括您将操作的两侧转换为相同类型,然后与===
进行比较的大多数情况。这就是==
的用途,为什么不使用它呢?