Понимание восклицательного знака (!) в JavaScript: объяснение логического оператора NOT

В JavaScript восклицательный знак (!) называется оператором «логического НЕ». Это унарный оператор, который работает с одним операндом и возвращает логическое значение, противоположное своему операнду. Операнд может иметь любой тип данных, а восклицательный знак преобразует его в логическое значение, а затем отрицает его.

Вот как работает логический оператор НЕ:

  1. При применении к истинному значению (значению, которое считается истинным, если оно встречается в логическом контексте), восклицательный знак возвращает false. Например:

    console.log(!true);  // false
    console.log(!'hello');  // false
    console.log(!42);  // false
  2. При применении к ложному значению (значению, которое считается ложным при обнаружении в логическом контексте) восклицательный знак возвращает true. Например:

    console.log(!false);  // true
    console.log(!0);  // true
    console.log(!null);  // true
  3. Если операнд не является логическим значением, восклицательный знак сначала преобразует его в логическое значение, а затем отменяет его. Преобразование следует определенным правилам:

    • не определено, null, 0, NaNи пустая строка ('') считаются ложными.
    • Все остальные значения, включая непустые строки, числа, отличные от 0, и объекты, считаются правдивыми.

Вот несколько примеров:

console.log(!undefined);  // true
console.log(!null);  // true
console.log(!'');  // true
console.log(!'non-empty string');  // false
console.log(!0);  // true
console.log(!42);  // false
console.log(!{});  // false

Используя логический оператор NOT, вы можете выполнять логическое отрицание, проверять наличие ложных значений и преобразовывать значения в их логические аналоги.