===
比较两个值并确保类型相同,==
而不关心类型。在“JavaScript 的优秀部分”一书中==
如果我没记错的话,
那么当你需要使用==
而不是时,你能给出用例的例子===
吗?
===
比较两个值并确保类型相同,==
而不关心类型。在“JavaScript 的优秀部分”一书中==
如果我没记错的话,
那么当你需要使用==
而不是时,你能给出用例的例子===
吗?
如果您知道比较是相同的类型,则==
与 相同===
,但为您节省一个字符。
例如,您可以只做typeof foo == 'function'
而不是typeof foo === 'function'
, 因为typeof
将始终返回一个字符串。
正如您所指出的,==
比较两个对象的值,同时===
比较类型。
弱类型的问题是你不能总是 100% 确定变量可能是什么类型。例如,您可能想从字符串中提取一个数字。随着您的代码变得越来越复杂,跟踪代码中哪些位置的变量是什么类型变得越来越困难。
于是进来了==
。"1" == 1
返回真,但 "1" === 1
不是。这通常是一件好事。虽然最终是个人选择使用哪个运算符的问题,但普遍接受的用法是==
默认使用,===
当这根本不够用时。
当您要检查值和类型时,请使用===
. 如果您只想检查值使用==
你的问题,强调我的:
...当您需要使用
==
而不是时,您能否举例说明用例===
?
这是一个加载的问题。==
你可以通过结合其他代码来模拟===
,只要你能做到,你就永远不会真正“需要” ==
。这有点像询问您“需要”的情况++
,可能是因为您更喜欢将其写为foo += 1
.
您的标题提出了一个更实际的问题:
什么时候在 js 中使用 == 而不是 === 是个好主意?
每当您发现自己在模仿 with 的行为时==
,===
您可能应该只是在使用==
. 这包括大多数情况下,您将操作的双方都转换为相同的类型,然后与===
. 这就是它的==
用途,为什么不使用它?
由于您是专门要求示例,而不是解释......我最常见的用例===
是这样的:
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');
}
这是一种懒惰的方式,但效果很好。在实践中,通常您很少需要使用==
,您更有可能需要使用===
.