Что означает функция вида `const render = (a) => (b) => {}`?

Как работает функция например const render = (elements) => (path, value, prevValue) => {}? Что за странная запись?

Аватар пользователя Ivan Gagarinov
Ivan Gagarinov
13 апреля 2022

Функция вида const a = (param1) => (param2) => {}; возвращает новую функцию, которая принимает параметр param2. Чтобы лучше понять как это работает, распишем функцию на несколько строк:

const a = (param1) => {
  const b = (param2) => {
    // какой-то код внутри функции
  };

  return b;
};

Внутри функции a создаётся функция b и возвращается.

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

const onClick = (id) => (event) => {
  console.log(`Id: ${id}`);
  // какая-то логика
};

const id = 'myButton';
const button = document.getElementById(id);

button.addEventListener('click', onClick(id));

Когда функция содержит какую-то внешнюю переменную — это еще называют замыканием.

11 1
Аватар пользователя Артём Мельников
Артём Мельников
05 ноября 2022

Это по сути замыкание?

4 0
Познакомьтесь с основами JavaScript бесплатно