我使用JSLint通过JavaScript,它返回了许多建议,以取代 ==(两个平等的标志)与 ===(三个平等的标志)当做一些事情,如比较idSele_UNVEHtype.value.length == 0在一个假设声明。

能否取代 = = = = = = =?

任何性能改进都将被欢迎,因为有许多比较运营商。

如果没有类型转换发生,会有超越 ==的性能收益吗?


当前回答

这里有一个有趣的视觉化平等之间的比较 ==和 ===。

来源: https://github.com/dorey/JavaScript-Equality-Table(演示,统一演示)


var1 === var2

当使用 === 用于 JavaScript 平等测试时,一切都如同。

此分類上一篇

此分類上一篇: Var1 = Var2

当使用 ==为JavaScript平等测试时,会发生一些 funky 转换。

此分類上一篇

平等在JavaScript中的概述

此分類上一篇


结论:

总是使用 ===,除非你完全了解与 ==发生的 funky 转换。

其他回答

使用 = = 运营商(平等)

true == 1; //true, because 'true' is converted to 1 and then compared
"2" == 2;  //true, because "2" is converted to 2 and then compared

使用 === 运营商(身份)

true === 1; //false
"2" === 2;  //false

这是因为平等运营商 = = 输入强迫,这意味着翻译者在比较之前暗示地试图转换值。

另一方面,身份操作员 === 不做类型强制,因此在比较时不转换值。

它建议取代 ==与 ===的原因是 ===操作员比 ==更可靠。在我们的背景下可靠的手段 ===也去类型检查. 考虑到最好的编程做法,我们应该总是选择更可靠的功能比不可靠的一个。 再一次,每当我们想到的正是相同的操作员大部分时间,我们是默认考虑类型应该是相同的。

在JavaScript中,它具有相同的值和类型。

例如,

4 == "4" // will return true

4 === "4" // will return false 

操作员称为严格的比较操作员,与操作员不同。

将采取2 vars a 和 b。

对于“a = = b”来评估为真实的 a 和 b 必须是相同的值。

在“a === b”的情况下,a 和 b 必须是相同的值,也必须是相同的类型,以便它被评估为真实。

接下来的例子

var a = 1;
var b = "1";

if (a == b) //evaluates to true as a and b are both 1
{
    alert("a == b");
}

if (a === b) //evaluates to false as a is not the same type as b
{
    alert("a === b");
}

简而言之,使用 == 操作员可能会在您不希望使用 === 操作员这样做的情况下评估为真实。

在90%的使用场景中,不管你使用哪个,但当你有一天得到一些意想不到的行为时,知道差异是有用的。

在您的使用中,不可能有两项操作之间的性能差异. 没有类型转换要进行,因为两项参数已经是相同的类型. 两项操作将有一个类型比较,其次是值比较。