undefined と null を Boolean false と比較すると、ステートメントは false を返します。
undefined == false;
null == false;
false を返します。なんで?
undefined と null を Boolean false と比較すると、ステートメントは false を返します。
undefined == false;
null == false;
false を返します。なんで?
JavaScript の作成者の会社が後援する比類のない MDN から。
JavaScript は、3 つの異なる値比較操作を提供します。
- === を使用した厳密な等価 (または「三重等価」または「同一性」)
- ==、
- Object.is (ECMAScript > 6 の新機能)。
使用する操作の選択は、実行しようとしている比較の種類によって異なります。
簡単に言うと、double equals は、2 つのものを比較するときに型変換を実行します。トリプルイコールは、型変換なしで同じ比較を行います (型が異なる場合は常に false を返すだけです)。および Object.is はトリプル イコールと同じように動作しますが、NaN と -0 および +0 の特別な処理が行われるため、最後の 2 つが同じであるとは見なされず、Object.is(NaN, NaN) は true になります。 . (通常、NaN と NaN を比較すると、つまり double equals または triple equals のいずれかを使用すると、false と評価されます。これは、IEEE 754 がそう言っているためです。) これらすべての違いは、プリミティブの処理に関係していることに注意してください。パラメータの構造が概念的に類似しているかどうかを比較するものはありません。同じ構造を持つが、それ自体が別個のオブジェクトである非プリミティブ オブジェクト x および y の場合、上記の形式はすべて false と評価されます。
JavaScript における平等の全体像の視覚的な概要については、 https ://dorey.github.io/JavaScript-Equality-Table/ を参照してください。
真実は、JavaScript のこの一見「悪い」側面は、それがどのように機能するかを理解すると力の源になるということです。
undefined/ null を他の型と比較するので、あなたの質問は半分です。偽の返品があります。== 演算子を使用していても、強制は発生しません。