1. ホーム
  2. javascript

[解決済み] JavaScriptのNullとundefinedのチェックと==と===の違いについて

2022-03-16 11:21:19

質問

  1. ある変数が null または undefined とはどのような違いがあるのでしょうか? nullundefined ?

  2. とはどのような違いがあるのでしょうか? ===== (Googleで"==="を検索するのは難しい)?

解決方法は?

<ブロッククオート

ある変数が null または undefined ...

は、変数 null :

if (a === null)
// or
if (a == null) // but see note below

...ただし、後者は aundefined .

それは undefined :

if (typeof a === "undefined")
// or
if (a === undefined)
// or
if (a == undefined) // but see note below

...しかし、もう一度言いますが、最後のものは曖昧であることに注意してください。 anull .

さて、上記にもかかわらず 通常の という事実を利用して、それらをチェックする方法です。 ファルシー :

if (!a) {
    // `a` is falsey, which includes `undefined` and `null`
    // (and `""`, and `0`, and `NaN`, and [of course] `false`)
}

で定義されています。 ToBoolean を仕様に追加しました。

...そして、その違いは何ですか? nullundefined ?

どちらも通常、何かがないことを示すために使われる値です。 undefined はより一般的なもので、他の値が割り当てられるまでの変数のデフォルト値として、関数が呼び出されたときに提供されていない関数の引数の値として、オブジェクトが持っていないプロパティを要求したときに得られる値として使用されます。しかし、これらの状況すべてにおいて、明示的に使用することもできます。(オブジェクトがプロパティを持たないことと、プロパティに値 undefined という値で関数を呼び出すのとは違います。 undefined を引数に取ることと、その引数を完全に外すことです)。

null よりも若干具体的です。 undefined : これは空白のオブジェクト参照です。JavaScriptはもちろん疎型ですが、JavaScriptが相互作用するものすべてが疎型であるわけではありません。ブラウザの DOM のような API が、空白のオブジェクト参照を必要とする場合、私たちは null ではなく undefined . そして同様に、DOM の getElementById 操作はオブジェクトの参照を返します - 有効なもの(DOM要素を見つけた場合)、または null (そうでない場合)。

興味深いのは(そうでなくても)、それらは独自の型であるということです。つまりは null はNull型の唯一の値であり undefined は未定義型における唯一の値である。

と"=="の違いは何ですか?

両者の違いは、ただ一つ == は型の強制を行い、値を一致させようとします。 === を使用しません。ですから例えば "1" == 1 は真であり、なぜなら "1" に強制する。 1 . しかし "1" === 1 というのは、型が一致しないからです。( "1" !== 1 が真になる) の最初の(本当の)ステップは === は "オペランドの型は同じか" で、答えが "no"の場合、結果は false . もし型が同じなら、それはまさに次のようになります。 == が行う。

型の強制はかなり複雑なルールを使うので、意外な結果になることがあります(例えば。 "" == 0 は真)。

詳しくは仕様書をご覧ください。