是!0和!1优于1和0?

时间:2013-03-16 07:29:52

标签: javascript

我注意到Closure Compiler将true和false(或1和0)编译为!0和!1。这对我来说没有意义,因为它的字符数是1和0的两倍。这是有原因的吗?有什么好处吗?

感谢。

1 个答案:

答案 0 :(得分: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,第二个条件为true。使用var a = !0;脚本仍然可以正常工作。