В JavaScript часто встречается оператор «!!». Например, этот оператор может быть использован в следующем контексте:
let isActive = !!user.active;
В таком случае возникает вопрос: что же делает этот оператор?
Оператор «!» в JavaScript — это логический оператор «НЕ». Он возвращает «true», если операнд является false, и «false», если операнд является true. То есть он инвертирует булево значение операнда.
let isActive = !user.active; // Если user.active было true, то isActive будет false, и наоборот
Но что, если использовать два таких оператора подряд, как в первом примере?
Оператор «!!» — это просто двойное применение оператора «!». Вначале первый оператор «!» инвертирует булево значение операнда, затем второй оператор «!» снова инвертирует его. В итоге получается исходное булево значение операнда.
let isActive = !!user.active; // Если user.active было true, то isActive будет также true, и наоборот
Возникает вопрос: зачем это нужно, если можно просто написать let isActive = user.active;
?
Ответ прост: оператор «!!» используется для преобразования любого значения в булево. Если user.active
— это не булево значение, а, например, строка, число или объект, то оператор «!!» преобразует его в булево значение. Если значение можно интерпретировать как «истина» (например, непустая строка или число, отличное от нуля), то результат будет true
. В противном случае — false
.
let isActive = !!'hello'; // isActive будет true, потому что 'hello' - это непустая строка let isZero = !!0; // isZero будет false, потому что 0 интерпретируется как "ложь"
В итоге, оператор «!!» в JavaScript — это удобный способ преобразовать любое значение в булево.
Добавить комментарий