Оператор ! в JavaScript
- Что делает оператор !
- Синтаксис
- Оператор ! в условиях
- ! и truthy/falsy значения
- Двойное отрицание !!
- Скобки со сложными условиями
- Итого
Оператор ! означает логическое «не». Он превращает значение в противоположное булево значение.
console.log(!true);
console.log(!false);
Результат:
false
true
Если значение было истинным, после ! получится false. Если значение было ложным, получится true.
Что делает оператор !
Оператор ! сначала приводит значение к boolean, а потом меняет его на противоположное.
console.log(!1);
console.log(!0);
console.log(!'JavaScript');
console.log(!'');
Результат:
false
true
false
true
Число 1 и непустая строка считаются truthy, поэтому после отрицания становятся false. Число 0 и пустая строка считаются falsy, поэтому после отрицания становятся true.
Синтаксис
!значение
Оператор ! пишется перед значением или выражением.
let isLoggedIn = false;
console.log(!isLoggedIn);
Результат:
true
Переменная isLoggedIn равна false, поэтому выражение !isLoggedIn возвращает true.
Оператор ! в условиях
Чаще всего ! используют в if, когда нужно проверить обратную ситуацию.
let isLoggedIn = false;
if (!isLoggedIn) {
console.log('Войдите в аккаунт');
}
Можно прочитать так: если пользователь не вошел в аккаунт, покажи сообщение.
Еще один пример:
let hasAccess = false;
if (!hasAccess) {
console.log('Доступ запрещен');
}
! и truthy/falsy значения
Оператор ! работает не только с true и false. Он может применяться к любым значениям.
let userName = '';
if (!userName) {
console.log('Имя не указано');
}
Пустая строка - falsy значение. После ! она становится true, поэтому код внутри if выполнится.
let userName = 'Анна';
if (!userName) {
console.log('Имя не указано');
}
В этом примере сообщение не появится, потому что непустая строка считается truthy.
Двойное отрицание !!
Иногда можно встретить двойное отрицание !!. Оно превращает значение в настоящий boolean.
console.log(!!'JavaScript');
console.log(!!'');
console.log(!!0);
console.log(!!25);
Результат:
true
false
false
true
Первый ! переворачивает значение, второй ! переворачивает его обратно. В итоге получается true или false.
Для начинающих часто понятнее использовать Boolean():
console.log(Boolean('JavaScript'));
console.log(Boolean(''));
Скобки со сложными условиями
Если отрицание применяется к сложному условию, лучше использовать скобки.
let age = 16;
let hasPermission = false;
if (!(age >= 18 || hasPermission)) {
console.log('Вход запрещен');
}
Сначала JavaScript проверяет условие в скобках: возраст подходит или есть разрешение. Потом ! меняет результат на противоположный.
Без скобок такой код читать сложнее, а смысл легко понять неправильно.
Итого
Оператор ! используется для отрицания. Он приводит значение к boolean и возвращает противоположный результат. В условиях ! удобно использовать для проверок вроде «не авторизован», «значение не указано», «доступа нет». Двойное отрицание !! превращает значение в true или false, но для учебного кода часто понятнее писать Boolean().