1. ホーム
  2. javascript

[解決済み] JavaScriptで未定義またはNULL変数をチェックする方法は?

2022-03-17 14:42:37

質問

私たちのJavaScriptコードでは、以下のコードパターンが頻繁に使用されています。

if (typeof(some_variable) != 'undefined' && some_variable != null)
{
    // Do something with some_variable
}

同じ効果を持つ、より冗長でないチェック方法はありますか?

いくつかのフォーラムや文献によると、単純に以下のように言っても同じ効果があるようです。

if (some_variable)
{
    // Do something with some_variable
}

残念ながら ファイアバグ は、このようなステートメントを実行時にエラーとして評価します。 some_variable が未定義である場合、最初のものは問題なく使用できます。これはFirebugの(好ましくない)動作に過ぎないのでしょうか、それともこの2つの方法には本当に何か違いがあるのでしょうか?

解決方法は?

ケースを区別する必要があります。

  1. 変数には undefined または 未定義 . 以外のコンテキストで宣言されていない変数にアクセスすると、エラーが発生します。 typeof .
if(typeof someUndeclaredVar == whatever) // works
if(someUndeclaredVar) // throws error

宣言されているが初期化されていない変数は undefined .

let foo;
if (foo) //evaluates to false because foo === undefined

  1. 未定義 プロパティ のように someExistingObj.someUndefProperty . 未定義のプロパティはエラーにならず、単に undefined と評価され、ブーリアン値に変換されます。 false . ですから、もしあなたが 0false を使用しています。 if(obj.undefProp) はOKです。この事実をもとにした慣用句があります。

    value = obj.prop || defaultValue
    
    

    というのは、もし obj は、プロパティ prop に割り当てる。 value そうでない場合は、デフォルト値 defautValue となります。

    この動作は混乱を招くと考える人もおり、見つけにくいエラーにつながると主張して in 演算子の代わりに

    value = ('prop' in obj) ? obj.prop : defaultValue