1

おそらく既にご存じのとおり、 の戻り値は(見つかった) または (見つからなかった)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)

他にも無数のオプション...

すべてのブラウザーで優れたパフォーマンスを発揮するのはどの方法ですか?

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

私のテストでは、毎回 2 つの行を追加しました。1 つは成功した結果で、もう 1 つは失敗しました。これは、両方のシナリオの平均で、通常のパフォーマンスをよりよく把握できるようにするためです。

私が結論付けたのは、~xx >= 0は本当に良い選択肢であるということですが、読みやすさとコードの保守性が容易なため、後者を選びます。

于 2012-06-07T23:09:52.140 に答える
0

パフォーマンスが気になる場合は、独自の indexOf メソッドを作成することを検討してください。この パフォーマンス テストを確認してください。結果には少し驚きました。また、IE8 以下は indexOf をサポートしていないことに注意してください。

于 2012-11-20T14:56:24.087 に答える