2011-01-02 5 views

答えて

5

ここではどちらでもOKですが、それは-1ではないことだけです。 個人的にはですが、私は!=を好んでいます。私はそれが明示的にではないと言っているからです。何かそんなこと...そしてこれが私たちが行っているチェックです。たとえば:

if(arr.indexOf("thing") != -1) 

それが見つからていないとき、単一の値、ユニーク-1結果はあなたが得ることないに対して明示的にチェックしています。 >では、の値がであることを確認しています...これはもっと明示的なものです。明確なものを使用してください。

私は>の明確な舵取りもう一つの理由は、はるかあまりにも多くの時間がStackOverflowの上(両方の質問答えに)私はほとんど決して正しいチェックがあるif(arr.indexOf("thing") > 0)を参照してくださいということです。

+0

これは面白いことですが、ここでは「> 0」エラーが発生しています。 –

+1

@ T.J。 - 私はたいていコメントし、それが修正されて参照してくださいが、私はそれを見たことが少なくとも1-200回言うだろう*遠すぎ*。数日前からの私の心の新鮮な例がここにあります:http://stackoverflow.com/questions/4555723/how-to-check-if-string-is-inarrayその特定のものは '> 0'ではありませんが、 '0'と比較すると、たぶんここで頻繁に'> 0'と表示されます。 –

+0

ああ、私は信じて*あなた。私は間違いなくコードのエラーを見てきましたが、ここではありません。まずそこに着く必要があります。 ;-) –

1

私は!=と言います。あなたが実際にそれを自分で言った:

をして-1

また

のindexOfの結果を比較するとき、!=>よりも高速です。

+1

スピードが心配な人は、 '!=='ではなく '!=='を使ってください。 :-)しかし、私は本当に実際の具体的な違いを気にする必要があります。周囲のコードの他の面がコンパレータの違いを完全に揺さぶることは間違いありません。 –

+1

*愚かなアサーション*を '> ='より速くすることは、 '>'よりも速く、*は該当する興味を持っています*はここでは単にダムです。これらの役に立たないu最適化を「進めない」ようにしてください。 –

2

Nick saidのいずれかが問題ありません。

index = str.indexOf('foo'); 
if (index >= 0) { 
    // Do something with `index` 
} 
else { 
    // 'foo' wasn't found 
} 
+1

私はこのアプローチをもう一度使います。 "ポジティブなコーディング" - 常にコードをより明るくします:-) –

関連する問題