2012-08-08 4 views
8

可能性の重複:
JavaScript === vs == : Does it matter which “equal” operator I use?Javascriptの文字列を比較するのに===を使用する必要がありますか、それとも十分ですか?

数字、ブール値、空の文字列を比較するとき===が必要な理由私は、例えば予期しない形への変換など、理解することができます

var foo = 1; 
var bar = true; 
// bar == foo => true 
// bar === foo => false 

しかし非空文字列リテラルに変数を比較するとき==これまでのバグを導入することができますか?この場合、===を超えて==を使用する方が効率的ですか?

+0

http://javascriptweblog.wordpress.com/2011/02/07/truth-equality-and-javascript/ – diEcho

+0

タイプの平等は同じか速いはずです:http://stackoverflow.com/a/359509/453277 –

+0

等価演算子( '===')です。値が同じ値で同じタイプであることをチェックします。このことを思い出してください。 – diEcho

答えて

7

これは多くのここで質問されているので、私はちょうど良いポスターをしてみましょう。

はこちらをご覧ください: http://longgoldenears.blogspot.com/2007/09/triple-equals-in-javascript.html

3つの等号は、「型の強制なし平等」を意味します。トリプルイコールを使用すると、値も同じでなければなりません。

 
0==false // true 
0===false // false, because they are of a different type 
1=="1"  // true, auto type coercion 
1==="1" // false, because they are of a different type 

ソースDifference between == and === in JavaScript

1

まあ、私はそれに答えました... 5 == "5"、しかし5!== "5"、予期しないかもしれません。私は深い洞察力を持っている誰にでも信用を与えるでしょう。

+0

それは答えです... – DerWaldschrat

4

これは、アイデンティティ演算子(!=====)を使用して、(例えばBoolean(someVar)またはNumber(someVar))に必要な場合にのみ、手動型強制を行い、常にすることをお勧めします。

A fun fiddle

0

"=="は比較が行われる前に型変換を行います。それが5 == "5"が真で偽でない理由です。

代わりに "==="はこの変換ではなく、5 === "5"はタイプが同じでない限り同じではありません。

関連する問題