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

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

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

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


当前回答

JavaScript 执行流图为严格的平等 / 比较 '==='

此分類上一篇

JavaScript 执行流图为非严格的平等/比较“==”

此分類上一篇

其他回答

从核心JavaScript参考

=== 返回是真实的,如果操作员是严格平等的(见上)没有类型转换。

JavaScript 有严格的和类型转换的比较. 一个严格的比较(例如, ===)仅是真实的,如果操作器是相同的类型. 更常用的抽象比较(例如, ==)在进行比较之前将操作器转换为相同的类型。

平等(==)操作员将操作员转换为操作员,如果它们不属于相同类型,则适用严格的比较;如果操作员是数字或波兰,操作员将转换为数字,如果可能;否则如果操作员是序列,操作员将转换为数字,如果可能。

参考:比较运营商(Mozilla Developer Network)

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

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


var1 === var2

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

此分類上一篇

此分類上一篇: Var1 = Var2

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

此分類上一篇

平等在JavaScript中的概述

此分類上一篇


结论:

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

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

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

例如,

4 == "4" // will return true

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