1. ホーム
  2. javascript

[解決済み] JavaScriptのNULLチェック

2022-03-01 13:27:07

質問

次のようなコードに出会いました。

function test(data) {
    if (data != null && data !== undefined) {
        // some code here
    }
}

私はJavaScriptにやや慣れていませんが、ここで読んだ他の質問から、このコードはあまり意味をなさないという印象を受けました。


特に この回答 は次のように述べています。

以外のコンテキストで未定義の変数にアクセスすると、エラーが発生します。 typeof .

更新しました。 上記の回答(の引用)は、誤解を招く可能性があります。次のように記述すべきです。 "未宣言の変数" ではなく "未定義の変数" .

による回答で、わかったことですが ライアン , メアリックス および ヌエルンホフ 関数に引数が与えられていない場合でも、引数のための変数は常に宣言されています。この事実は、以下のリストの最初の項目が誤りであることを証明するものでもあります。


私の理解では、以下のようなシナリオが想定されます。

  • この関数は引数なしで呼び出されたため data が未定義の変数になり data != null .

  • この関数は、特に null (または undefined を引数にとります。 data != null はすでに内側のコードを保護し && data !== undefined は役に立たない。

  • この関数は、非NULLの引数で呼び出された場合、トリビアルに data != null data !== undefined .

Q:私の理解は正しいのでしょうか?


Firefoxのコンソールで、以下を試してみました。

--
[15:31:31.057] false != null
[15:31:31.061] true
--
[15:31:37.985] false !== undefined
[15:31:37.989] true
--
[15:32:59.934] null != null
[15:32:59.937] false
--
[15:33:05.221] undefined != null
[15:33:05.225] false
--
[15:35:12.231] "" != null
[15:35:12.235] true
--
[15:35:19.214] "" !== undefined
[15:35:19.218] true

というケースが思いつきません。 data !== undefined data != null は、何か役に立つかもしれません。

解決方法は?

未定義変数」が値と異なる場合 undefined .

未定義の変数です。

var a;
alert(b); // ReferenceError: b is not defined

値を持つ変数 undefined :

var a;
alert(a); // Alerts “undefined”

関数が引数を取る場合、その引数はその値が undefined そのため、エラーになることはありません。あなたの言うとおり != null に続いて !== undefined とはいえ、無駄なことですが。