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

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

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

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


当前回答

上述2个答案都意味着平等,而 ===则意味着身份。

如果两个操作员是对象,那么它们是相似的,以确定它们是否是相同的对象;如果两个操作员指向相同的对象,那么相同的操作员会返回真相;否则,两者不相同。

var a = [1, 2, 3];  
var b = [1, 2, 3];  
console.log(a == b)  // false  
console.log(a === b) // false  

在上面的代码中,既 == 又 === 都是虚假的,因为 a 和 b 不是相同的对象。

也就是说,如果两个操作员是 ==的对象, ==行为相同的 ===,这也意味着身份,这两个操作员的基本区别是类型转换。

其他回答

javascript 是一个弱点编写的语言,即没有任何数据类型,如在 C、c++ 例如 int、boolean、 float 等,因此一个变量可以持有任何类型的值,这就是为什么这些特殊的比较操作员在那里。

艾格

var i = 20;var j = "20";

如果我们应用比较运营商,这些变量结果将是

i==j //result is true

j != i//result is false

为此,我们需要一个特殊的比较运营商,检查值以及变量的数据类型。

如果我们做

i===j //result is false

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

这里是一个方便的比较表,显示发生的转换和 ==和 ===之间的差异。

如结论所说:

“使用三种平等,除非你完全理解两种平等发生的转变。

http://dorey.github.io/JavaScript - 平等 - 表/

这是一个严格的检查测试。

这是一个很好的事情,特别是如果你在0和虚假和零之间检查。

例如,如果你有:

$a = 0;

然后:

$a==0; 
$a==NULL;
$a==false;

所有返回是真实的,你可能不想这样做. 假设你有一个功能可以返回一个序列的 0th 指数或错误的故障. 如果你检查“=="错误,你可以得到一个混乱的结果。

所以,与上面的相同,但严格的测试:

$a = 0;

$a===0; // returns true
$a===NULL; // returns false
$a===false; // returns false

平等比较运营商 ==是混乱的,应该避免。

如果你必須與它一起生活,請記住以下三件事:

它不是过渡的:(a ==b)和(b ==c)不会导致(a ==c)它是相互排斥它的否认:(a ==b)和(a!=b)总是保持相反的布莱恩值,所有A和B。

平等运营商在JavaScript中的真实表格

表中的每个行都是三个相互“平等”值的组合,这意味着它们之间的任何2个值都是平等的,使用平等的 ==标志*。

** 奇怪:请注意,第一列中的任何两个值在这个意义上不平等。

''       == 0 == false   // Any two values among these 3 ones are equal with the == operator
'0'      == 0 == false   // Also a set of 3 equal values, note that only 0 and false are repeated
'\t'     == 0 == false   // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
'\r'     == 0 == false   // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
'\n'     == 0 == false   // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
'\t\r\n' == 0 == false   // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

null == undefined  // These two "default" values are not-equal to any of the listed values above
NaN                // NaN is not equal to any thing, even to itself.