Gecko が if (false) { ... } みたいなのを最適化してた

August 29th, 2006

JavaScript で #ifdef 0 代わりに if (false) { ... } なんてのを書いていて気づいたんだけど、Firefox, Camino だと、

(function () {
    if (false) {
       alert("hello");
    }
 }).toString();

が返す文字列が、

function () {
}

になる。Function#toString() がやる意味も無いので、eval した時に最適化されてるんだろうと思う。

function () {
    var f = false;
    if (f) {
        alert("hello");
    }
}

そんなに手間はかけてないのか、こんなふうに一度変数に代入すると消さなくなる。