使用相等 (===) 或不相等 (!==) 运算符是不是更高效?
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 中 ==(相等运算符) 和 ===(严格相等运算符) 区别