2012-04-21 7 views
0

可能性の重複:
JavaScript === vs == : Does it matter which “equal” operator I use?==対===リモートJavaScriptファイルで。どちらが速いの?

任意の概念の違いを確認しない=====を使用して、JavaScriptで平等に同じタイプの2つのオペランドを比較するので、私は思ったんだけど私の場合のようにJavaScriptファイルをリモートのインターネットロケーションからダウンロードする必要がある場合、オペレータは実際にはより高速です。

厳密な等価演算子===は、多くのユーザーエージェントでより高速に実行できますが、JavaScriptファイルを使用してネットワーク上で8ビット以上の非圧縮情報を保持する必要があります。

偶然にも、今日の平均CPUはインターネット接続が1つのビットを提供しているよりも、数百の条件ジャンプを実行するにははるかに高速ですので、私は==代わりの===!=の代わり!==可能性を使用することに熱心になるだろう。しかし、私は非常に多くのブログを読んで混乱しています。

欠けている点がありますか?

+2

私はその考え方の違いを –

+3

"圧縮されていない情報の8ビット"と考えています。 JSファイルがgzipで提供されている場合、その1つの余分な文字はほとんど違いがありません。 –

+1

ルーズで厳格な***は***の目的を持っています。別々に動作する2つのものを比較することはできません。 – Joseph

答えて

1

あなたが言うように、両方のオペランドが同じ型であることが保証されている比較のために、2つの演算子は同じ手順を正確に実行するように指定されており、十分近似して実行する必要があります。したがって、=====以上に使用すると、ファイルサイズの面でわずかな利点があります。 は、平等をテストするときに通常意図するものに近い場合が多く、===!==を使用するのは、多くの人が参考にして読みやすいものであることが唯一のものであると主張する人もいます。個人的には逆のルールがあり、オペランドの型が不明な場合は===しか使用しませんが、どちらの方法でもお勧めしません。

==!=を使用しても、あなたや他の誰かがあなたのコードを作業して将来的にコードを読んで理解することができないと確信しているなら、それらを使用してください。

1

おそらく類似した操作との論理的な一貫性と速度のための論理的な一貫性の理由から、一方を推奨するブログはそうしています。 Javascriptプログラムをトリミングして、スクリプトから個々の文字を削り取るようにするのは賢明ではありません。最小化のためのJavascriptや個々のオペランドのレベルでの実行速度を手作業でチューニングすることは、あなたのサイトを維持するのを困難にする無限の、感謝しない作業です。

より論理的な意味のオペランドを使用してください。したがって、2年後にこの照会ラインを覚えていないと混乱することはありません。テストは、テストは1を持っているかどうかを1かが、===チェックを持っており、また、それはデータ型ですチェックするかどうかを

1
var test="1"; 
console.log(test==1); // true 
console.log(test===1); // false 

==チェック。その場合、2番目の式はデータ型が文字列(testは文字列)ですが、右側のオペランドは文字列ではないため、falseです。次のテストは、テストがInteger 1が含まれているためBoolean真、右側のオペランドに評価されている

var test=1; 
console.log(test==1); // true 
console.log(test===1);​ // true 

異なっても同じです。 ===は、両方のオペランドがタイプするかどうかもチェックします。

1

私はダグラス・クロックフォードのJavaScriptから引用する場合:良い部品を:== ===と==、およびその 悪双子と:!

JavaScriptが2つの等価演算子のセットを持っています! =。良いものは、あなたが期待する方法で動作します。 2つのオペランドが同じ型で同じ値を持つ場合、 ===がtrueを生成し、!==がfalseを生成します。悪い双子は、オペランドが同じ型のときは正しいことを行いますが、異なる型の場合は値を強制しようとします。彼らがしている の規則は複雑であり、記憶できません... の不足は驚くべきことです。私のアドバイスは、悪い双子を絶対に使わないことです。 代わりに、常に===と!==を使用してください。

パフォーマンスの違いにかかわらず、「悪い双子」の使用を正当化することは困難です。

+0

オペランドが同じタイプであることが保証されている場合は、質問に記載されているように適用されません。 –

+0

Javascriptは動的言語であるため、論理型の比較は同じ型の2つのオブジェクトであるとは必ずしもはっきりしていません。それは私の意見では、リスクを取らない方が良いです。 –

+0

これは合理的な態度です。オペランドの型が同じであるかどうかを具体的に質問しているように思われるので、私はそれを述べました。 –

関連する問題