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

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

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

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


当前回答

在PHP和JavaScript中,它是一个严格的平等运营商,这意味着它将比较类型和值。

其他回答

问题在于,你可能很容易陷入麻烦,因为JavaScript有很多暗示的转换,这意味着...

var x = 0;
var isTrue = x == null;
var isFalse = x === null;

最好的样本为什么暗示转换是“邪恶”可以从这个代码在MFC / C++,这实际上会由一个暗示转换从CString到HANDLE,这是一个指标类型。

CString x;
delete x;

显然,在工作时间内,它会做一些非常不确定的事情......

谷歌对C++和STL的暗示转换,以获得一些反对它的论点。

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

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


var1 === var2

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

此分類上一篇

此分類上一篇: Var1 = Var2

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

此分類上一篇

平等在JavaScript中的概述

此分類上一篇


结论:

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

在这里的答案中,我没有读到什么是平等的意思,有些人会说 === 意味着平等和相同的类型,但这不是真的。

所以,让我们采取下列代码:

var a = [1,2,3];
var b = [1,2,3];
var c = a;

var ab_eq = (a === b); // false (even though a and b are the same type)
var ac_eq = (a === c); // true

在这里相同:

var a = { x: 1, y: 2 };
var b = { x: 1, y: 2 };
var c = a;

var ab_eq = (a === b); // false (even though a and b are the same type)
var ac_eq = (a === c); // true

var a = { };
var b = { };
var c = a;

var ab_eq = (a === b); // false (even though a and b are the same type)
var ac_eq = (a === c); // true

这种行为并不总是显而易见的,有更多的故事,而不是平等和同类。

规则是:

对于值类型(数字): a === b 如果 a 和 b 具有相同的值,并且具有相同的类型,则返回真实。


下一篇:特殊案例...

var a = "12" + "3";
var b = "123";

alert(a === b); // returns true, because strings behave like value types

但是,这个问题怎么样呢?

var a = new String("123");
var b = "123";

alert(a === b); // returns false !! (but they are equal and of the same type)

我以为线条像值类型一样行事吗? 好吧,这取决于你问谁...... 在这种情况下, a 和 b 不是相同的类型. a 是类型对象,而 b 是类型线条。

是啊!重要。

=== 操作员在 javascript 中检查值以及类型,在那里作为 == 操作员只检查值(需要时进行类型转换)。

此分類上一篇

您可以轻松地测试它. 在 HTML 文件中插入跟踪代码并在浏览器中打开它

<script>

function onPageLoad()
{
    var x = "5";
    var y = 5;
    alert(x === 5);
};

</script>

</head>

<body onload='onPageLoad();'>

现在修改 onPageLoad() 方法以警告(x == 5);你会得到真相。

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