Как инвертировать значение?

Для инвертирования значения в JavaScript можно использовать оператор отрицания (!) или битовое отрицание (~).

1. Оператор отрицания (!):
Оператор отрицания служит для инвертирования булевых значений. Если передать в него значение, он возвратит противоположное значение.

Пример:

   let value = true;
   let invertedValue = !value; // Значение переменной invertedValue будет false

2. Битовое отрицание (~):
Битовое отрицание оперирует с числами и инвертирует все биты значения. Оно преобразует число в его дополнительное двоичное представление, заменяя 0 на 1 и 1 на 0.

Пример:

   let num = 42;
   let invertedNum = ~num; // Значение переменной invertedNum будет -43

Важно отметить, что битовое отрицание работает только с 32-битными целыми числами и возвращает знаковое 32-битное число.

Вспомогательные операторы и методы могут быть также использованы для инвертирования значения конкретного типа данных. Например:

- Для числовых значений: умножение на -1 или использование оператора смены знака (-).
- Для строк: использование метода reverse() для переворачивания порядка символов.
- Для массивов: использование метода reverse() или создание нового массива с элементами в обратном порядке.
- Для объектов: использование цикла для итерации по всем свойствам объекта и инвертирования их значений.

Примеры:

   let num = 5;
   let invertedNum = -num; // Значение переменной invertedNum будет -5
   
   let str = "Hello";
   let invertedStr = str.split("").reverse().join(""); // Значение переменной invertedStr будет "olleH"
   
   let arr = [1, 2, 3, 4, 5];
   let invertedArr = arr.reverse(); // Значение переменной invertedArr будет [5, 4, 3, 2, 1]
   
   let obj = { a: true, b: false };
   for (let key in obj) {
       obj[key] = !obj[key];
   }
   // Значение объекта obj будет { a: false, b: true }

В зависимости от ситуации, выбор способа инверсии значения может отличаться. Оператор отрицания часто используется для простых булевых значений, в то время как битовое отрицание применяется для более сложных операций с числами. Для других типов данных, таких как строки, массивы или объекты, дополнительные операторы или методы могут быть более удобными и эффективными.