null == undefined
確かにtrueと評価されますが、null === undefined
falseと評価されます。
これら2つのステートメントの違いは、等式演算子です。JavascriptのDouble-equalは、2つのアイテムを比較する前に同じタイプに変換します。の場合null == undefined
、これはnull
、比較が行われる前にが未定義の変数に変換されることを意味します。したがって、等式です。
文字列と整数でも同じ効果を示すことができます"12" == 12
。trueですが、"12" === 12
falseです。
この例は、それぞれに1つ追加することについて、次のポイントを議論するためのより簡単な方法を提供します。上記の例では、整数に1を追加すると明らかにが得られ13
ますが、文字列を使用すると文字列"12" + 1
が得られます"121"
。これは完全に理にかなっており、他の方法では必要ありませんが、double-equal演算子を使用すると、元の2つの値は等しいと報告されます。
ここでの教訓は、異なるタイプの変数を比較する特別な必要がない限り、常にdouble-equalよりもtriple-equal演算子を使用することです。
あなたの最後のポイントはnull
、一般的な気まぐれな性質を示しています。null許容型のデータベースフィールドを操作しようとしたことがある人なら誰でもわかるように、これは独特の獣です。Nullは、コンピュータサイエンスで非常に具体的な定義を持っており、複数の言語で同様の方法で実装されているため、説明する状況は、特別なJavascriptの奇妙さではありません。ヌルは変です。の代替名のように動作することを期待しないでくださいfalse
。そのようには機能しません。組み込みのinfinity
値は、同様に奇妙な方法で、同様の理由で動作する可能性があります。
ただし、Javascriptには奇妙な部分があります。http://wtfjs.com/を読むことに興味があるかもしれません。このサイトには、Javascriptが行う奇妙なことのすべてのエントリがあります。それらのかなりの数がandと関係がnull
ありundefined
(組み込みオブジェクトの値を再定義することが実際に可能であることをご存知undefined
ですか?!)、それらのほとんどには、実際に何が起こっているのか、そしてその理由についての説明が付いています。物事がそのように機能する理由を示すのに役立つかもしれませんし、避けるべきことを示すのに間違いなく役立ちます!そして、他に何もないとしても、人々が貧しい言語に投げかけようとした虐待のいくつかを見るのは、楽しい読み物になります。