7

ClosureCompilerがtrueとfalse(または1と0)を!0と!1としてコンパイルすることに気づきました。1と0の2倍の文字なので、これは私には意味がありません。これには理由がありますか?何かメリットはありますか?

ありがとう。

4

1 に答える 1

10

1 !== true0 !== 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;は引き続き正しく機能します。

于 2013-03-16T07:31:59.070 に答える