11

重複の可能性:
JavaScript === vs ==:どの「等しい」演算子を使用するかは重要ですか?

===予期しない型変換のために、数値、ブール値、空の文字列などを比較するときになぜ必要なのか理解できます。

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

しかし 、変数を空でない文字列リテラル==と比較するときにバグが発生する可能性はありますか?この場合、使い切る方が効率的ですか?=====

4

4 に答える 4

11

これはここでよく聞かれるので、自分よりも優れたポスターに答えてもらいます。

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

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

0==false // 真
0===false // false、タイプが異なるため
1=="1" // true、自動型強制
1==="1" // false、タイプが異なるため

source JavaScript における == と === の違い

于 2012-08-08T13:16:14.453 に答える
5

恒等演算子 (および)を常に使用し、必要な場合 (または など) にのみ手動で型強制を実行することをお勧めします。!=====Boolean(someVar)Number(someVar)

楽しいフィドル

于 2012-08-08T13:16:26.107 に答える
1

5 == "5" でも 5 !== "5" で、意外かもしれません。ただし、より深い洞察を持っている人には信用を与えます。

于 2012-08-08T13:14:24.020 に答える
0

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

"===" は代わりにこの変換を行わないため、型が同じでない限り 5 === "5" は同じではありません。

于 2012-08-08T13:17:56.480 に答える