Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我注意到 Closure Compiler 将 true 和 false(或 1 和 0)编译为 !0 和 !1。这对我来说没有意义,因为它的字符数是 1 和 0 的两倍。这是有原因的吗?有什么好处吗?
谢谢。
1 !== true和0 !== false, 但是!0 === true和!1 === false. 编译器只是确保类型保持布尔值。
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;一个条件,则为假,第二行为真。使用var a = !0;脚本仍然可以正常工作。
var a = 1;
var a = !0;