!0和!1比1和0更好吗?

7
我注意到闭包编译器将true和false(或1和0)编译成!0和!1。对我来说,这似乎没有意义,因为它比1和0多了一倍的字符数。这样做有什么原因吗?有任何好处吗?
谢谢。
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,第二个条件为true。使用var a = !0;,脚本仍将正确工作。


!0具有节省2个字符的额外优势,而!1则具有节省3个字符的额外优势,这在代码压缩时非常有用。虽然有些过度优化,但如果是机器在进行优化,谁会在乎呢? - Norguard

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接