2007-07-05 [JavaScript] オブジェクトがnullやundefindでないか評価する。
■[JavaScript] オブジェクトがnullやundefindでないか評価する。
ifで評価すれば一発で判定できます。
if ( target ) { ... } // 以下のようにはしなくてもいい。 // if ( target == null || target == undefined ) { ... }
値ごとのifでの評価結果は次の表の通り。空文字列や0はfalse扱いなので注意。
| 値 | ifで評価した結果 |
|---|---|
| Object | true |
| undefined | false |
| null | false |
| 0 | false |
| 1 | true |
| -1 | true |
| ""(空文字列) | false |
| "a" | true |
| 配列 | true |
| ハッシュ | true |
確認してみます。
var stdout = document.getElementById("stdout"); // オブジェクト / null, undefind は false stdout.innerHTML += "null is " + ( null ? "true" : "false" ) + ".<br/>"; stdout.innerHTML += "undefined is " + ( undefined ? "true" : "false" ) + ".<br/>"; stdout.innerHTML += "object is " + ( new Object() ? "true" : "false" ) + ".<br/>"; // 数字 / 0 はfalse stdout.innerHTML += "0 is " + ( 0 ? "true" : "false" ) + ".<br/>"; stdout.innerHTML += "1 is " + ( 1 ? "true" : "false" ) + ".<br/>"; stdout.innerHTML += "-1 is " + ( -1 ? "true" : "false" ) + ".<br/>"; // 文字列 / 空文字はfalse stdout.innerHTML += " is " + ( "" ? "true" : "false" ) + ".<br/>"; stdout.innerHTML += "a is " + ( "a" ? "true" : "false" ) + ".<br/>"; // 配列 / どちらもtrue stdout.innerHTML += "[] is " + ( [] ? "true" : "false" ) + ".<br/>"; stdout.innerHTML += "['a'] is " + ( ['a'] ? "true" : "false" ) + ".<br/>"; // ハッシュ / どちらもtrue stdout.innerHTML += "{} is " + ( {} ? "true" : "false" ) + ".<br/>"; stdout.innerHTML += "{a:'a'] is " + ( {a:'a'} ? "true" : "false" ) + ".<br/>";
実行結果です。
null is false.
undefined is false.
object is true.
0 is false.
1 is true.
-1 is true.
is false.
a is true.
[] is true.
['a'] is true.
{} is true.
{a:'a'] is true.