Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript (!~index)比(index=-1)快吗?_Javascript_Performance_Bitwise Operators - Fatal编程技术网

Javascript (!~index)比(index=-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中搜索“!~”不太有效)这是一个有意义的性能差异吗?可能不会,但这完全取决于虚拟机 你总是可以用类似的方法找到答案。不,它们肯定不一样 按位转换将执行隐式

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

对我来说,与-1比较相比,逻辑NOT+按位NOT语句似乎非常不可读。是否有足够的速度差来保证使用其中一个?或者,如果不是速度,我没有使用按位not代替==

(如果这是一个dup,我会提前查询,但我找不到确切问题的答案。在SO或Google中搜索“!~”不太有效)

这是一个有意义的性能差异吗?可能不会,但这完全取决于虚拟机


你总是可以用类似的方法找到答案。不,它们肯定不一样

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

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

var val = "-1";

(!~val) // true
(val === -1)  // false
在这种情况下,我认为比较的目的和正确性远远超过任何性能考虑。确定您想要比较的内容,并对作业使用正确的比较。

Be,追求可读性 这两个都是快速的


如果脚本有性能问题,它肯定不会归结为这个布尔检查。但是,正如其他人所说,这两个(完全)不一样。

感谢您对类型强制的了解。我不知道。