我使用JSLint通过JavaScript,它返回了许多建议,以取代 ==(两个平等的标志)与 ===(三个平等的标志)当做一些事情,如比较idSele_UNVEHtype.value.length == 0在一个假设声明。
能否取代 = = = = = = =?
任何性能改进都将被欢迎,因为有许多比较运营商。
如果没有类型转换发生,会有超越 ==的性能收益吗?
我使用JSLint通过JavaScript,它返回了许多建议,以取代 ==(两个平等的标志)与 ===(三个平等的标志)当做一些事情,如比较idSele_UNVEHtype.value.length == 0在一个假设声明。
能否取代 = = = = = = =?
任何性能改进都将被欢迎,因为有许多比较运营商。
如果没有类型转换发生,会有超越 ==的性能收益吗?
当前回答
无,无,无,无,无,无。
var a;
var b = null;
在这里, a 和 b 没有值. 因为, 0 是虚假的和 '' 都是值. 其中的一件常见的是,它们都是虚假的值,这意味着它们都满足虚假的条件。
因此, 0 虚假和 '' 一起形成一个子组. 另一方面, null 和 undefined 形成第二个子组. 查看下图中的比较. null 和 undefined 将是相同的. 其他 3 将是相同的。
此分類上一篇
這是相同的任何物體(如 {}, arrys,等),不空的線 & Boolean 真實是所有真實的條件. 但,他們都不是平等。
其他回答
平等比较运营商 ==是混乱的,应该避免。
如果你必須與它一起生活,請記住以下三件事:
它不是过渡的:(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.
这里有一个有趣的视觉化平等之间的比较 ==和 ===。
来源: https://github.com/dorey/JavaScript-Equality-Table(演示,统一演示)
var1 === var2
当使用 === 用于 JavaScript 平等测试时,一切都如同。
此分類上一篇
此分類上一篇: Var1 = Var2
当使用 ==为JavaScript平等测试时,会发生一些 funky 转换。
此分類上一篇
平等在JavaScript中的概述
此分類上一篇
结论:
总是使用 ===,除非你完全了解与 ==发生的 funky 转换。
问题在于,你可能很容易陷入麻烦,因为JavaScript有很多暗示的转换,这意味着...
var x = 0;
var isTrue = x == null;
var isFalse = x === null;
最好的样本为什么暗示转换是“邪恶”可以从这个代码在MFC / C++,这实际上会由一个暗示转换从CString到HANDLE,这是一个指标类型。
CString x;
delete x;
显然,在工作时间内,它会做一些非常不确定的事情......
谷歌对C++和STL的暗示转换,以获得一些反对它的论点。
是啊!重要。
=== 操作员在 javascript 中检查值以及类型,在那里作为 == 操作员只检查值(需要时进行类型转换)。
此分類上一篇
您可以轻松地测试它. 在 HTML 文件中插入跟踪代码并在浏览器中打开它
<script>
function onPageLoad()
{
var x = "5";
var y = 5;
alert(x === 5);
};
</script>
</head>
<body onload='onPageLoad();'>
现在修改 onPageLoad() 方法以警告(x == 5);你会得到真相。
使用 === 如果你想在JavaScript中比较几件事,它被称为严格的平等,这意味着如果只有两种类型和值是相同的,就不会有任何不需要的类型纠正为你,如果你使用 ==,你基本上不关心类型,在许多情况下你可能会遇到问题与空虚的平等比较。
使用严格的平等 ===
var num = 0;
var obj = new String('0');
var str = '0';
console.log(num === num); // true
console.log(obj === obj); // true
console.log(str === str); // true
console.log(num === obj); // false
console.log(num === str); // false
console.log(obj === str); // false
console.log(null === undefined); // false
console.log(obj === null); // false
console.log(obj === undefined); // false
使用平等 = = =
空的平等比较两种平等值,然后将两种值转换为一个常见的类型。 转换后(一方或两方可能遭受转换),最终的平等比较按 === 进行。 空的平等是相同的: A == B 总是具有相同的序列为 B == A 的任何值 A 和 B (除了应用转换顺序)。
var num = 0;
var obj = new String('0');
var str = '0';
console.log(num == num); // true
console.log(obj == obj); // true
console.log(str == str); // true
console.log(num == obj); // true
console.log(num == str); // true
console.log(obj == str); // true
console.log(null == undefined); // true
// both false, except in rare cases
console.log(obj == null);
console.log(obj == undefined);