Ответ 1
Есть, по-видимому, один. Если вы используете 1 или 0 для перевода true или false, это будет короче, но будет рассматриваться как целые числа. Если вы добавите! спереди и наоборот, он будет объединен в булевы и все еще будет коротким.
Я пишу приложение, используя Enyo2, который поставляется с инструментом миниатюризации на основе UglifyJS. Я заметил, что:
var t = false
заменяется на
var t=!1
Точно так же true заменяется на! 0. Я уверен, что для этого есть хорошее объяснение, я просто не могу его найти. Любая идея?
Есть, по-видимому, один. Если вы используете 1 или 0 для перевода true или false, это будет короче, но будет рассматриваться как целые числа. Если вы добавите! спереди и наоборот, он будет объединен в булевы и все еще будет коротким.
Это наименьший недвусмысленный способ выразить значение.
true
использует 4 символа на проводе, а false
- 5 символов. !1
и !0
используйте 2 символа.
В JavaScript 0 - значение ложности. Это означает, что 0
приравнивается к false
при представлении в виде булева типа. 1 с другой стороны; или любое другое положительное число в этом отношении, не является ложным значением и будет равно true
.
Здесь мы могли бы просто установить:
t = 0; // false
t = 1; // true
Проблема заключается в том, что эти значения представляют собой целые числа (числа), а не логические значения (true или false). Используя строгую проверку равенства (===
), мы найдем:
t = 0;
t == false; // true
t === false; // false
Оператор !
выполняет логическую операцию NOT по значению и может быть использован как быстрый способ преобразования любого значения в boolean:
t = !1;
t == false; // true
t === false; // true
Отрицание преобразует небулево, но истинное значение в чисто булево.
Я запустил это в инструментах разработчика Chrome:
> !1
false
> !0
true
Следовательно, !1
является взаимозаменяемым с false
, а !0
является взаимозаменяемым с true
. Итак, теперь, когда мы знаем, что это безопасно изменить, возникает следующий вопрос. Ну, потому что это меньше байтов. Пункт минимизации состоит в том, чтобы сделать код меньшим, но совместимым.
Короче говоря, это безопасный способ сжать буквальные true
и false
, чтобы они занимали меньше места при передаче по проводу.