我注意到 Closure Compiler 将 true 和 false(或 1 和 0)编译为 !0 和 !1。这对我来说没有意义,因为它的字符数是 1 和 0 的两倍。这是有原因的吗?有什么好处吗?
谢谢。
最佳答案
1 !== true
和 0 !== false
,但是 !0 === true
和 !1 = == 错误
。编译器只是确保类型保持 bool 值。
考虑这个例子:
var a = true;
if( a === true ) {
console.log( 'True!' );
}
if( a === 1 ) {
console.log( 'You should never see this.' );
}
如果将第一行更改为 var a = 1;
,第一个条件将为假,第二个为真。使用 var a = !0;
脚本仍然可以正常工作。
关于javascript - !0 和 !1 比 1 和 0 好吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15446749/