【问题标题】:Does using the Double Equals in JavaScript Cause Performance Issues?在 JavaScript 中使用双等号会导致性能问题吗?
【发布时间】:2015-12-16 19:34:41
【问题描述】:

根据 JavaScript 中的“严格模式”,您应该在比较 if 语句中的值时使用 ===。但是,在处理真值/假值时,这可能会导致很长的 if 语句:

if (a !== null && a !== undefined && a !== '' && a !== 0) {}

为了解决这个问题,我开始使用!!

if(!!a === true) {}

将值转换为布尔值。但是,我担心会影响性能。根据我的 JSPerf (http://jsperf.com/double-exclamation-vs-falsy/4),这种方法比长形式的 if 语句慢 30%。

我在这里离基地很远吗?有其他人注意到性能下降吗?

【问题讨论】:

  • 很少需要与truefalse 进行显式比较。只需if (a) 即可。
  • 如果使用!!,则不需要=== true=== false
  • @PatrickEvans 如果不进行比较,也不需要!!
  • 理论上== 的性能较差,因为它需要类型强制。但是!!a 基本上做了 JS 会做的事情,如果你使用 == (即将操作数转换为布尔值)。
  • if (a) 在严格模式下绝对完全可以。事实上,使if (!!a === true) 工作的完全相同的行为是使普通旧if (a) 工作的原因 - ! 应用程序中的隐式真实性测试与@中的真实性测试完全相同相同987654340@.

标签: javascript performance if-statement boolean


【解决方案1】:

使用if(!!a) { 确实会对性能造成重大影响,因为您执行的布尔转换与JS 在内部执行if(a) 时所做的相同。像 if(a === true)if(a !== null && a !== undefined) 这样进行显式类型检查会更高效

【讨论】:

  • if (a != null)if (a !== null && a !== undefined)完全相同相同,值得。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-28
  • 2015-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多