undefined
を判定する方法
1. undefined
と比較する
比較的新しめの環境であれば、これでOK。
var hoge; hoge === undefined;
ECMAScript 5より前の環境や、処理系によっては、undefined
の書き換えが可能。
そのような環境ではundefined
がundefined
であることが確実ではないので、他の方法で判定する必要がある。
2. 値が未定義であることを判定する
typeof(hoge) === "undefined";
3. undefined
を返す値と比較する
voidに何を与えてもundefined
が返されるので、下記のように判定できる。
var hoge;
hoge === void 0;
4. undefined
はfalseと判定されることを利用する
var hoge;
!hoge;
ただし、下記が全てfalseとして判定されるので、厳密には判定できない。
値 | 型 | 備考 |
---|---|---|
"" | 文字 | 空の文字列 |
0 | 数値 | |
false | 真偽値 | |
undefined | undefined | |
null | null |
5. nullで判定する
undefined
とnull
は比較するとこのようになる。
比較 | 真偽値 |
---|---|
null === null | true |
undefined === undefined | true |
null === undefined | false |
undefined === null | false |
null == undefined | true |
undefined == null | true |
なので、undefined
とnull
とを分けずに一緒に判定するのであればこれでいい。
var hoge; hoge == null;
補足
JavaScriptでは未初期化の変数の値はundefined
となる。
undefined
には2種類あり、変数が初期化されていない場合と、変数が宣言されていない場合の二種類がある。
JavaScriptには在るundefinedと無いundefinedってのがありまして。 | Ginpen.com
2は、宣言されていない変数に対しても判定ができる。
1、3、4、5はhogeが宣言されていない場合ReferenceError
が発生する。
/* hogeを宣言せずに書いた場合、下記は全てReferenceError */ hoge === undefined; hoge === void 0; !hoge; hoge == null;
参考
[JavaScript] typeof arg == 'undefined' っていらないんじゃね? / LiosK-free Blog
[JavaScript] null とか undefined とか 0 とか 空文字('') とか false とかの判定について - Qiita
JavaScript:undefined値の判定: Architect Note