この記事では、JavaScript での等価性 (==) の使用法について説明します。必要な方は参考にしていただければ幸いです。
Where is the magic
最近担当しているプロジェクトがフロントエンド関連だったので、jsを書いてみました。フィールドの非 null 値を処理するときに、tagert_value == '' を使用して判断すると、target_value = 0 の場合に非 null 値の検証が失敗するという非常に奇妙な現象が発生したと報告する人もいました。問題をデバッグするときに、コンソールのステータス バーで次のことを試しました。
> 0 == '' < true
問題の場所がわかったようです。 。 。 ==の判定ロジックがよく分からないので、公式ドキュメントを探して見てみようと思います。
Equality (==, !=)
1. 2 つの式の型が異なる場合は、文字列に変換してみます。数値、またはブール値。
2、NaN はそれ自体を含むものとは等しくない。
3、負のゼロは正のゼロと等しい。
4、null は null と未定義の両方に等しい。 .
5、値 数値的に同一の文字列であれば、等しいとみなされます。 同等の数値、同じオブジェクト、同一のブール値、または (if
6、他のすべての比較は不等とみなされます。
平等に関する公式の説明を見て、最初の説明を確認しました。なぜ結果が真であるのかがわかります。式の両側の型が一致しない場合、比較メソッドはまずそれらを文字列、数値、またはブール値に変換してから比較を実行します (等しい条件: 同じ文字列、数学的に等しい数値、同じオブジェクト、同じブール値)。
これを見ると、0 == '' を比較すると、最初に型が変更されたことがわかります。次に、誰が変換されるか見てみましょう。
> Number('') < 0 > var b= '' > b.toString() <'0'
int == string の場合、文字列はまず対応する int 値に変換されてから比較されることは明らかです。
以下は === (厳密な等価性) の強力な紹介です。厳密に言えば、非常に強力に見えます。正式名称は Identity (===. !==) です。 『アイデンティティ』には、ちょっとしたサスペンス解決のような雰囲気があります。
公式の紹介を参照してください:
Identity (===. !==)
これらの演算子は、
型変換が行われないことを除き、型は等価演算子である必要があります。
以上がJavaScriptにおける等号(==)の使い方の説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。