I Shar

I Shar

мир глазами веб-разработчика

Двойное отрицание

двойное отрицание вместо boolean() в JavaScript

I Shar

время чтения 2 мин.

Photo by Jørgen Håland on Unsplash

Булевы значения (boolean) названы в честь английского математика и логика Джорджа Буля (George Boole) и принимают только два значения: истина (true) или ложь (false).

Обычно, такие данные применяются в математической логике.

В программирование булевы значения нужны для определения условий управляющих структур, например: операторов выбора (if) или цикла (while).

Для того, чтобы принудительно преобразовать значение любого типа в булево (true или false) в JavaScript существует встроенная функция Boolean().

Но это не единственный способ.

Оператор логического отрицания

Для начала, познакомимся с оператором логического отрицания. Синтаксически он выглядит как восклицательный знак. Имя оператора взаимствовано из наименования отрицательного элемента булевой алгебры.

Оператор логического отрицания эффективно меняет значение с истины (true) на ложь (false) и наоборот:

onsole.log(!true);  // false
console.log(!false); // true
let x = 5;
console.log(x != 3); // true

Но, что случится, если знак ! будет предшествовать значению другого типа?

Значение будет принудительно преобразовано в булево, но с противоположным смыслом:

console.log(!0);    // true
console.log(!5);    // false
console.log(!"");   // true
console.log(!null); // true

Таким образом, значения, изначально определяемые, как ложные (false): null, 0, пустая строка - станут истинными (true).

Оператор двойного отрицания

Теперь, понимая, как работает оператор логического отрицания, мы можем принудительно преобразовать значение любого типа в булево, не искажая его смысла. Все, что для этого нужно - еще раз изменить смысл логического значение с true на false или наоборот.

console.log(!!5);    // true
console.log(!!"");   // false
console.log(!!null); // false

Является ли двойное отрицание !! отдельным оператором?

Технически - нет. Это всего лишь двукратное использование оператора логического отрицания. Но, стоит, отдать должное, использование двойного отрицания эффективно преобразует значения любого типа в булевы.


Спасибо за внимание.

    • frontend
    • js

Новые публикации

Далее

Категории

О нас

Frontend & Backend. Статьи, обзоры, заметки, код, уроки.