Javascript (!~index)比(index=-1)快吗?
在函数返回-1的情况下(例如Javascript (!~index)比(index=-1)快吗?,javascript,performance,bitwise-operators,Javascript,Performance,Bitwise Operators,在函数返回-1的情况下(例如indexOf()),我经常遇到使用(!~val)而不是(val==-1)的人 对我来说,与-1比较相比,逻辑NOT+按位NOT语句似乎非常不可读。是否有足够的速度差来保证使用其中一个?或者,如果不是速度,我没有使用按位not代替== (如果这是一个dup,我会提前查询,但我找不到确切问题的答案。在SO或Google中搜索“!~”不太有效)这是一个有意义的性能差异吗?可能不会,但这完全取决于虚拟机 你总是可以用类似的方法找到答案。不,它们肯定不一样 按位转换将执行隐式
indexOf()
),我经常遇到使用(!~val)
而不是(val==-1)
的人
对我来说,与-1比较相比,逻辑NOT+按位NOT语句似乎非常不可读。是否有足够的速度差来保证使用其中一个?或者,如果不是速度,我没有使用按位not代替==
(如果这是一个dup,我会提前查询,但我找不到确切问题的答案。在SO或Google中搜索“!~”不太有效)这是一个有意义的性能差异吗?可能不会,但这完全取决于虚拟机
你总是可以用类似的方法找到答案。不,它们肯定不一样 按位转换将执行隐式类型强制。==运算符检查类型是否相等 所以这两个可以给出完全不同的结果
var val = "-1";
(!~val) // true
(val === -1) // false
在这种情况下,我认为比较的目的和正确性远远超过任何性能考虑。确定您想要比较的内容,并对作业使用正确的比较。Be,追求可读性
这两个都是快速的
如果脚本有性能问题,它肯定不会归结为这个布尔检查。但是,正如其他人所说,这两个(完全)不一样。感谢您对类型强制的了解。我不知道。