サイ本を買った

JavaScript 第5版

JavaScript 第5版

Firefoxの拡張開発は主にJavaScriptで行う。僕はあんまり詳しくないので、オライリー・ジャパンのJavaScript 第5版を買った。「サイ本」とも呼ばれる有名な本だ。

ちょっと読んだだけだが、曖昧な記述がなく本格的な内容だ。それでいて文章に変なくせがなく読みやすい。さすがにJavaScriptの決定版と言われるだけのことはある。

かなりボリュームのある本だが(最後の索引も含めると全671ページ)、じっくりと読んでいくことにする。

さっそくだが、読んでいて気になったことを書いておく。「3.3.1 論理値の型変換」の節だ。ここでは何がtrueで何がfalseと評価されるのかが書かれていて、「nullでないオブジェクトや配列、関数はtrueに変換されます」とある。この辺はプログラムの基本なので、実際にコードを書いて確認してみた。

コードはこんな感じだ。

function do_test() {
    var testTargets = {
        "nonZero": 1,
        "zero": 0,
        "NaN": NaN,
        "nonNullStr": "test",
        "nullStr": "",
        "null": null,
        "undef": undefined,
        "emptyObj": {},
        "emptyArray": [],
        "function": function(){},
    };

    for (var key in testTargets) {
        if (testTargets[key]) {
            document.write(key + " is true");
        } else {
            document.write(key + " is false");
        }
        document.write("<br />");
    }
}

適当にHTMLに埋め込んで表示させたら、出力は以下のようになった。

nonZero is true
zero is false
NaN is false
nonNullStr is true
nullStr is false
null is false
undef is false
emptyObj is true
emptyArray is true
function is true

うむ、本に書いてある通りだ(そりゃそうだ)。特に空のオブジェクト、空の配列、何もしない関数がtrueであることに注意しておく。

あと、読んでいるとJavaScript クイックリファレンスの方も読んでね、と出てきてうっとおしい。しょうがないのでそっちも買ってやった。