ClosureCompilerがtrueとfalse(または1と0)を!0と!1としてコンパイルすることに気づきました。1と0の2倍の文字なので、これは私には意味がありません。これには理由がありますか?何かメリットはありますか?
ありがとう。
ClosureCompilerがtrueとfalse(または1と0)を!0と!1としてコンパイルすることに気づきました。1と0の2倍の文字なので、これは私には意味がありません。これには理由がありますか?何かメリットはありますか?
ありがとう。
1 !== true
と0 !== false
、しかし!0 === true
と!1 === false
。コンパイラは、型がブール値のままであることを確認するだけです。
この例を考えてみましょう。
var a = true;
if( a === true ) {
console.log( 'True!' );
}
if( a === 1 ) {
console.log( 'You should never see this.' );
}
最初の行をvar a = 1;
最初の条件に変更すると、falseになり、2番目の行はtrueになります。スクリプトの使用var a = !0;
は引き続き正しく機能します。