オブジェクトが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.