您可能已经知道,indexOf
的返回值是index
(找到)或-1
(未找到)。
有很多方法可以测试这个结果,其中一些是:
if (result != -1) //different than -1
if (result >= 0) //greater or equal to 0
其他不常见的选择:
if (result + 1) //-1 turns to: -1 + 1 = 0 (falsish value)
if (~result) //-1 turns to: -(-1 + 1) = 0 (falsish value)
无数其他选择......
哪种方法适用于所有浏览器?
答案 0 :(得分:3)
我前段时间运行了一些intensive tests,我比较了所有这些组合:
if (~results)
if (results > -1)
if (!(results < 0))
if (results >= 0)
if (!(results <= -1))
if (results != -1)
if (!(results == -1))
if (results + 1)
if (!(results + 1))
在my tests上,我每次都添加两行,一行成功,一行失败。这样做的原因是我们希望两种情景的平均值能够更好地了解它通常会如何执行。
我得出的结论是~x
和x >= 0
是非常好的选择,但我会选择后者,因为可读性和代码可维护性更容易。
答案 1 :(得分:0)
如果您关心性能,可以考虑制作自己的indexOf方法。看看这个performance test,结果让我感到有些惊讶。另请注意,IE8及以下版本不支持indexOf