или почему JavaScript по-прежнему потрясающий язык.

Сегодня у меня возникла, может быть, странная идея создать функцию, которая отлаживает функцию, заданную в качестве параметра.

debug (callback) {
  return (...parameters) => {
    // eslint-disable-next-line standard/no-callback-literal
    const result = callback(...parameters)
    console.log(callback.name, parameters, result)
    return result
  }
},

Итак, как вы можете видеть, отладка создает функцию-оболочку для данной функции, чтобы обернуть каждый вызов данной функции. При этом вы можете видеть в своей консоли, что происходит. Итак, если мы хотим получить представление о том, что делает следующая функция

this.toggleLocation(parseFloat(place.lat), parseFloat(place.lng))

мы окружаем его отладкой, помещая потом аргументы

this.debug(this.toggleLocation)(parseFloat(place.lat), parseFloat(place.lng))

Результат в консоли дает представление о вызове.

Еще один случай, который я тестировал, - это правила, которые я должен проверять для полей ввода, как показано ниже.

nameRules: [
  rules.requiredRule,
  rules.minimumLengthRule(3)
],

В окружении отладки он дает мне подробную информацию о каждом вызове.

nameRules: [
  this.debug(rules.requiredRule),
  rules.minimumLengthRule(3)
],

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

Увидимся