P粉3365367062023-08-24 09:01:58
==
演算子を使用します (Equal ) ===
operator(Identity)これは、等価演算子 ==
が型キャスト を行うためです。つまり、インタプリタは比較する前に暗黙的に値の変換を試行します。
一方、 恒等演算子 ===
は型強制を行わないため、比較時に値は変換されません。
P粉1788942352023-08-24 00:58:02
厳密等価演算子 (===
) は、型変換が実行されず、型が同じ、同等とみなされます。
リファレンス:
演算子は、必要な型変換の後で が等しいかどうかを比較します。
=== 演算子 は変換を実行しないため、2 つの値が同じ型でない場合、
=== は単に # を返します。 ##間違い## #。どちらも同じくらい速いです。
Douglas Crockford の素晴らしい文章を引用します
JavaScript: 良い部分 ,
。オブジェクトの場合、== と === は互いに同じように動作します (特殊な場合を除く)。
リーリー
特別なケースは、toString
または valueOf
メソッドにより、プリミティブを同じプリミティブとして評価されるオブジェクトと比較する場合です。たとえば、文字列プリミティブを、
コンストラクターを使用して作成された文字列オブジェクトと比較することを考えてみましょう。
リーリー
Here==
演算子は両方のオブジェクトの値をチェックして true
を返しますが、
はそれらの型が異なることを確認して ## を返します# 間違い###。どちらが正しいか?それは何を比較するかによって異なります。私の提案は、この問題を完全に回避し、文字列リテラルから文字列オブジェクトを作成するために String
コンストラクターを使用しないことです。
######参照する######
https://262.ecma-international.org/5.1/#sec-11.9 .3