1

私はリントを使用しており、次の目的で使用しています。

if (json.RowKey != json.NewRowKey)

それは私にメッセージを与えます:

Expected '!==' and instead saw '!='.

誰かがこれが何を意味するのか説明できますか?

4

4 に答える 4

1

==比較する前に、2つのオペランドのタイプを同じに変換しようとします。したがって"2" == 2、ですtrue

===2つのオペランドの型を変換しようとしないため、同じ型でない場合は、変換されません===。したがって"2" === 2、ですfalse

をデフォルトの選択肢として使用し、型変換を明示的に許可する場合にのみ使用する===ことをお勧めします。2つのオペランドが異なるタイプであると期待していない場合は、期待どおりの動作をする可能性が高くなります。!====!====!==

これにより、物事が実際には等しくなく、コードがそれらを等しくすることを意図していない場合のコーディングミスを回避できます。

予期しない可能性があり、トラブルにつながる可能性のある、で発生する==(および発生しない)いくつかの奇妙なことがあります。===これらはすべて次のように評価されtrueます。

null == undefined
false == '0' 
0 == '0' 
0 == ''

ここに詳細が書かれています:JavaScriptの比較ではどちらの等しい演算子(== vs ===)を使用する必要がありますか?

于 2012-09-25T05:28:55.417 に答える
0

!==の代わりに演算子を使用することを検討する必要があることを知らせる警告です!=

表面的には、どちらも同じことを行います。つまり、2 つの項目が等しくないかどうかを比較します。ただし、!==最初に両方の項目が同じ型であることを確認してください (つまり、比較される一方の項目が文字列で、もう一方の項目が数値である場合、文字列を数値に変換しようとはしません)。一般に安全に使用でき、比較エラーを回避するのに役立ちます。

詳細については、次を参照してください:どの等号演算子 (== vs ===) を JavaScript 比較で使用する必要がありますか?

于 2012-09-25T05:30:14.910 に答える
0

はい、

if("1" == 1) //Returns true because it will convert the second 1 into a string to match

しかし

"1" !== 1 //Returns false because the first 1 is a string and the second 1 is an integer. 

変数の型について話しています。2 つの等号を使用すると、javascript (および php) は変数を型キャストします (整数 1 を文字列 1 に変換して一致させて true にします) が、2 番目のステートメントではそうではありません。

1 === 1 //True
1 === "1" //False
1 == "1" //True
1 == 1 //True

私の答えがあなたにとって理にかなっていることを願っています。

于 2012-09-25T05:34:03.493 に答える