Я заметил, что компилятор Closure компилирует true и false (или 1 и 0) как! 0 и! 1. Это не имеет смысла для меня, так как в два раза больше символов, чем 1 и 0. Есть ли причина для этого? Есть ли польза?Is 0 и! 1 лучше, чем 1 и 0?
Спасибо.
Я заметил, что компилятор Closure компилирует true и false (или 1 и 0) как! 0 и! 1. Это не имеет смысла для меня, так как в два раза больше символов, чем 1 и 0. Есть ли причина для этого? Есть ли польза?Is 0 и! 1 лучше, чем 1 и 0?
Спасибо.
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;
скрипт будет работать правильно.
'! 0' имеет дополнительное преимущество при сохранении 2 символов, а'! 1' имеет дополнительное преимущество при сохранении 3 при минимизации. Путь чрезмерно оптимизирован, но если машина делает оптимизацию, кого это волнует. – Norguard
Интересно, спасибо! – Suffick