/
Вопросы и ответы
/
JavaScript
/

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

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

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

3 года назад

Ivan Gagarinov

Ответы

11

Функция вида 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));

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

3 года назад

Ivan Gagarinov

4

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

3 года назад

Артём Мельников