1

您可能已经知道, 的返回值indexOfindex(found) 或-1(not found)。

有很多方法可以测试这个结果,其中一些是:

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)

还有无数其他选择...

哪种方法在所有浏览器中都表现良好?

4

2 回答 2

4

不久前我进行了一些密集测试,我比较了所有这些组合:

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))

我的测试中,我每次都添加了两行,一条成功,一条失败。这样做的原因是因为我们希望这两种情况的平均值能够更好地了解它通常的表现。

我的结论是,这~x确实x >= 0是很好的选择,但我会选择后者,因为它具有可读性和更容易的代码可维护性。

于 2012-06-07T23:09:52.140 回答
0

如果您关心性能,您可以考虑制作自己的 indexOf 方法。看看这个 性能测试,结果让我有点吃惊。另请注意,IE8 及以下不支持 indexOf

于 2012-11-20T14:56:24.087 回答