===
予期しない型変換のために、数値、ブール値、空の文字列などを比較するときになぜ必要なのか理解できます。
var foo = 1;
var bar = true;
// bar == foo => true
// bar === foo => false
しかし 、変数を空でない文字列リテラル==
と比較するときにバグが発生する可能性はありますか?この場合、使い切る方が効率的ですか?==
===
===
予期しない型変換のために、数値、ブール値、空の文字列などを比較するときになぜ必要なのか理解できます。
var foo = 1;
var bar = true;
// bar == foo => true
// bar === foo => false
しかし 、変数を空でない文字列リテラル==
と比較するときにバグが発生する可能性はありますか?この場合、使い切る方が効率的ですか?==
===
これはここでよく聞かれるので、自分よりも優れたポスターに答えてもらいます。
こちらをご覧ください: 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 における == と === の違い
恒等演算子 (および)を常に使用し、必要な場合 (または など) にのみ手動で型強制を実行することをお勧めします。!==
===
Boolean(someVar)
Number(someVar)
5 == "5" でも 5 !== "5" で、意外かもしれません。ただし、より深い洞察を持っている人には信用を与えます。
「==」は、比較が行われる前に型変換を行います。これが、5 == "5" が真で偽ではない理由です。
"===" は代わりにこの変換を行わないため、型が同じでない限り 5 === "5" は同じではありません。