@ParanormalDanX

Как работает отрицание функции?

Здравствуйте. Нашел функцию, которая позволяет сравнивать объекты между собой:
const compareObjects = (a, b) => {
 if (a === b) return true;

 if (typeof a != 'object' || typeof b != 'object' || a == null || b == null) return false;

 let keysA = Object.keys(a), keysB = Object.keys(b);

 if (keysA.length != keysB.length) return false;

 for (let key of keysA) {
   if (!keysB.includes(key)) return false;

   if (typeof a[key] === 'function' || typeof b[key] === 'function') {
     if (a[key].toString() != b[key].toString()) return false;
   } else {
     if (!compareObjects(a[key], b[key])) return false;
   }
 }

 return true;
}


Но не могу понять, для чего используется отрицание функции !compareObjects(a[key], b[key]). Впервые с таким сталкиваюсь. Непонятно, как в общем работает отрицание функций в JS и для чего это используется в данном конкретном примере.
  • Вопрос задан
  • 76 просмотров
Пригласить эксперта
Ответы на вопрос 2
Robur
@Robur
Знаю больше чем это необходимо
Непонятно, как в общем работает отрицание функций в JS

никак, нет такого понятия "отрицание функции".

функция вызовется, что-то вернет и к этому значению применится оператор "!"
в данном случае функция возвращает true или false, соответственно будет if (!true) или if (!false). как это работает вы я думаю уже должны знать.
по простому - в этом примере если вызов compareObjects для ключей объектов вернул false (свойства key в а и b не равны) то возвращаем false (объекты a и b тоже не равны)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы