在从函数返回-1的情况下(例如(!~val)
),我经常使用(val === -1)
而不是indexOf()
来遇到某个人。
对我来说,与-1比较相比,逻辑NOT +按位NOT语句似乎非常难以理解。是否有足够的速度差异来保证使用一个而不是另一个?或者如果不是速度,我缺少使用按位NOT而不是===?
的其他原因(如果这是一个复制品,请事先提供Aplologies。但是我找不到这个确切问题的答案。搜索“!〜”在SO或Google中不起作用)
答案 0 :(得分:3)
不,他们肯定不一样。
按位转换将执行隐式类型强制。 ===运算符检查类型是否相等。
所以这两个可以给出完全不同的结果。
var val = "-1";
(!~val) // true
(val === -1) // false
在这种情况下,我认为比较的意图和正确性远远超过任何绩效考虑因素。确定您想要比较的内容,并使用正确的比较作业。
答案 1 :(得分:1)
这是有意义的性能差异吗?可能不是,但它完全依赖于在虚拟机上。
您始终可以找到使用http://jsperf.com/
之类的内容答案 2 :(得分:0)