使用相等 (===) 或不相等 (!==) 运算符是不是更高效?

Posted

技术标签:

【中文标题】使用相等 (===) 或不相等 (!==) 运算符是不是更高效?【英文标题】:Is it more performant to use equal (===) or unequal (!==) operator?使用相等 (===) 或不相等 (!==) 运算符是否更高效? 【发布时间】:2019-05-19 19:32:13 【问题描述】:

如果它检查字符串的每个字符,它可以在之前中断循环。 但我不知道它在内部是如何工作的。

例子:

如果(字符串A === 字符串B)

if(!(stringA !== stringB))

哪个最快?

【问题讨论】:

这取决于...请补充一些信息,例如支票的实际情况。 javascript - === vs == operators performance 的可能重复通常建议使用严格相等 === 而不是 ==(请参阅此 list of JS best practices) !== === 快,如果比较的值具有不同的类型,在其他情况下它们具有相同的速度,因为首先是类型检查,然后是值检查 使用更能代表您的逻辑的运算符,无论哪种情况,性能都不是问题。 使用最简单的。您绝对不想让您的代码难以阅读。当您真正需要时,您会关心性能。 【参考方案1】:

在这里我做了一些模拟让你自己看看哪个操作比另一个更快。随意玩弄它。

// ===
console.time();
console.log("1 === 1", 1 === 1);
console.timeEnd();

console.time();
console.log("1 === '1'", 1 === '1');
console.timeEnd();

// !==
console.time();
console.log("1 !== 1", 1 !== 1);
console.timeEnd();

console.time();
console.log("1 !== '1'", 1 !== '1');
console.timeEnd();

粗略总结,!===== 快。

【讨论】:

这远远不足以作为一个结论性的测试。您需要对每个测试进行数百或数千次,并使用平均值来补偿现代多任务引擎如何在 CPU 上安排测试的可变性。 你可以从中得出的真正结论是,第一个测试总是最慢的,不管哪个是第一个(你可以通过重新安排测试自己看到)。这是有道理的,因为 JS 引擎可以在同一个脚本中优化更多类似的操作。

以上是关于使用相等 (===) 或不相等 (!==) 运算符是不是更高效?的主要内容,如果未能解决你的问题,请参考以下文章

Javascript 中 ==(相等运算符) 和 ===(严格相等运算符) 区别

JavaScript中相等==和严格相等===的区别

我应该避免使用 C#“is”运算符进行相等检查吗? [关闭]

JS基础_相等运算符

JAVA中关于相等运算符(兼容操作数)的查询

javascript中的符号 == 和 === 的区别