Is !0 and !1 better than 1 and 0?
javascript
Solution
`1 !== true` and `0 !== false`, but `!0 === true` and `!1 === false`. The compiler just makes sure the type stays boolean.
Consider this example:
var a = true;
if( a === true ) {
console.log( 'True!' );
}
if( a === 1 ) {
console.log( 'You should never see this.' );
}
If you change the first line to `var a = 1;` the first conditional would be false and the second true. Using `var a = !0;` the script would still work correctly.
Problem
I noticed that Closure Compiler compiles true and false (or 1 and 0) as !0 and !1. This doesn't make sense to me since it's twice as many characters as 1 and 0. Is there a reason for this? Is there any benefit? Thanks.