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

时间:2013-01-30 07:45:33

标签: javascript

===比较两个值并确保类型相同,而==不关心类型。在书中,“JavaScript the good parts”==被称为“邪恶的双胞胎”如果我不记得错了。

您是否可以在需要使用==而不是===时提供用例示例?

6 个答案:

答案 0 :(得分:1)

如果您知道比较的类型相同,那么=====相同,但为您保存一个字符。

例如,您可以typeof foo == 'function'代替typeof foo === 'function',因为typeof将始终返回字符串。

答案 1 :(得分:1)

正如您所指出的,==比较了两个对象的值,而===也比较了这个类型。

弱类型的问题在于,您无法始终100%确定变量的类型。例如,您可能希望从字符串中提取数字。随着代码变得越来越复杂,跟踪代码中哪些类型的变量变得越来越困难。

所以来=="1" == 1返回true,但"1" === 1没有。这通常是件好事。虽然最终是个人选择要使用哪个运营商的问题,但普遍接受的用法是默认情况下使用==,而===则仅限于此。

答案 2 :(得分:0)

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

有关Comparison Operators in javascript

的更多信息

答案 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中使用==而不是===?

每当您发现自己使用==模仿===的行为时,您应该只使用==。这包括您将操作的两侧转换为相同类型,然后与===进行比较的大多数情况。这就是==的用途,为什么不使用它呢?