で条件判定について詳しく解説されてるので、そちらを参考にif についてより深く知るための情報をまとめました
true/falseを判定するメソッド
Truth, Equality and JavaScriptの中にあったコードを参考にまずは以下の様なメソッドを定義します
var trutheyTester = function(expr) {
return expr ? "trueです" : "falseです";
}
このメソッドにいくつかの引数を設定して実際にどうなるかをChromeのConsoleの機能で確認してみます
オブジェクト は trueと評価される
trutheyTester({});
// "trueです"
配列はオブジェクトなのでtrueと評価される
trutheyTester([]);
// "trueです"
undefined は false と評価される
var notDefinedVariable;
// undefined
trutheyTester(notDefinedVariable);
// "falseです"
null は false と評価されます。
trutheyTester(null);
// "falseです"
真偽値 は boolean型の値 として評価されます。
trutheyTester(false);
// "falseです"
以下は実際にこういうコードを見たり書いたりすることがないと思うのですが、サンプルに乗っていたので記載しておきます。
trutheyTester(new Boolean(false));
// "trueです"
ちなみにtrueになる理由ですが
- new Boolean(false)という記述は以下のようにオブジェクト型になる
- オブジェクトは前述したように常にtrueになる
というためです
typeof(new Boolean(false));
// "object"
数値 は true と評価されます。
trutheyTester(1);
// "trueです"
しかし、 +0, -0, or NaN の場合は false です。
trutheyTester(NaN);
// "falseです"
文字列 は true と評価されます
trutheyTester('文字列の確認');
// "trueです"
しかし、空文字 '' の場合は false です。
trutheyTester('');
// "falseです"