(!~index)是否比(index === -1)快?

时间:2012-09-04 15:04:33

标签: javascript performance bitwise-operators

在从函数返回-1的情况下(例如(!~val)),我经常使用(val === -1)而不是indexOf()来遇到某个人。

对我来说,与-1比较相比,逻辑NOT +按位NOT语句似乎非常难以理解。是否有足够的速度差异来保证使用一个而不是另一个?或者如果不是速度,我缺少使用按位NOT而不是===?

的其他原因

(如果这是一个复制品,请事先提供Aplologies。但是我找不到这个确切问题的答案。搜索“!〜”在SO或Google中不起作用)

3 个答案:

答案 0 :(得分:3)

不,他们肯定不一样。

按位转换将执行隐式类型强制。 ===运算符检查类型是否相等。

所以这两个可以给出完全不同的结果。

var val = "-1";

(!~val) // true
(val === -1)  // false

在这种情况下,我认为比较的意图和正确性远远超过任何绩效考虑因素。确定您想要比较的内容,并使用正确的比较作业。

答案 1 :(得分:1)

这是有意义的性能差异吗?可能不是,但它完全依赖于在虚拟机上

您始终可以找到使用http://jsperf.com/

之类的内容

答案 2 :(得分:0)

pragmatic,为了便于阅读

快速 f @ $#off

如果您的脚本存在性能问题,肯定不会归结为此布尔检查。但正如其他人所说,这两者并非(完全)相同。