2013-03-16 14 views
7

私は、Closure Compilerがtrueとfalse(または1と0)を!0と!1としてコンパイルすることに気付きました。 1と0の2倍の文字数なので、これは意味がありません。これには理由がありますか?何か利点はありますか?!0と!1は1と0よりも優れていますか?

ありがとうございました。

答えて

10

1 !== trueおよび0 !== falseしかし、!0 === trueおよび!1 === falseである。コンパイラは、型がbooleanのままであることを確認します。あなたはvar a = 1;に最初の行を最初の条件がfalseと第二真されるだろう変更する場合

var a = true; 

if(a === true) { 
    console.log('True!'); 
} 

if(a === 1) { 
    console.log('You should never see this.'); 
} 

は、この例を考えてみましょう。 var a = !0;を使用すると、スクリプトは正しく動作します。

+0

'!0'は2文字を節約できるという利点があり、'!1'は縮小中に3を節約できるという利点があります。過度に最適化された方法ですが、マシンが最適化を行っている場合は、誰が気にしますか。 – Norguard

+0

面白い、ありがとう! – Suffick

関連する問題