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");
}
}
そんなに手間はかけてないのか、こんなふうに一度変数に代入すると消さなくなる。