1

===比较两个值并确保类型相同,==而不关心类型。在“JavaScript 的优秀部分”一书中==如果我没记错的话,

那么当你需要使用==而不是时,你能给出用例的例子===吗?

4

6 回答 6

1

如果您知道比较是相同的类型,则==与 相同===,但为您节省一个字符。

例如,您可以只做typeof foo == 'function'而不是typeof foo === 'function', 因为typeof将始终返回一个字符串。

于 2013-01-30T07:48:53.863 回答
1

正如您所指出的,==比较两个对象的值,同时===比较类型。

弱类型的问题是你不能总是 100% 确定变量可能是什么类型。例如,您可能想从字符串中提取一个数字。随着您的代码变得越来越复杂,跟踪代码中哪些位置的变量是什么类型变得越来越困难。

于是进来了=="1" == 1返回真,但 "1" === 1不是。这通常是一件好事。虽然最终是个人选择使用哪个运算符的问题,但普遍接受的用法是==默认使用,===当这根本不够用时。

于 2013-01-30T07:50:03.047 回答
0

当您要检查值和类型时,请使用===. 如果您只想检查值使用==

有关javascript 中比较运算符的更多信息

于 2013-01-30T07:48:37.947 回答
0

你的问题,强调我的:

...当您需要使用==而不是时,您能否举例说明用例===

这是一个加载的问题。==你可以通过结合其他代码来模拟===,只要你能做到,你就永远不会真正“需要” ==。这有点像询问您“需要”的情况++,可能是因为您更喜欢将其写为foo += 1.

您的标题提出了一个更实际的问题:

什么时候在 js 中使用 == 而不是 === 是个好主意?

每当您发现自己在模仿 with 的行为时=====您可能应该只是在使用==. 这包括大多数情况下,您将操作的双方都转换为相同的类型,然后与===. 这就是它的==用途,为什么不使用它?

于 2013-01-30T09:10:21.467 回答
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');
}

这是一种懒惰的方式,但效果很好。在实践中,通常您很少需要使用==,您更有可能需要使用===.

于 2013-01-30T07:53:48.940 回答
0

===使用and运算符几乎总是更好!==

==and运算符会进行类型强制,!=例如。他们将强制将字符串评估为数字。

而在 的情况下===,由于字符串“1”与数值 1 不同,所以结果为假。

见此。

于 2013-01-30T07:55:08.710 回答