Страницы

Поиск по вопросам

вторник, 31 декабря 2019 г.

За счёт чего работает конструкция “функция()()”?

#javascript


const sum = (a) => {
  let sum = a;
  const func = (b) => {
    if (b) {
      sum += b;
      return func;
    } else {
      return sum;
    }
  };
  return func;
};
sum(2)(3)()


Есть такая функция, за счёт чего можно функцию так вызывать?
Вторые скобочки - это аргумент или это другой вызов функции?
    


Ответы

Ответ 1



sum(2): вызывается функция sum, в качестве аргумента передаётся 2 sum(2)(3): результат выполнения sum(2) вызывается как функция, в качестве аргумента передаётся 3. К ошибке это не приводит, так как sum действительно возвращает функцию (func) sum(2)(3)(): результат выполнения sum(2)(3) вызывается как функция, аргументы не передаются. К ошибке это также не приводит, так как func в данном случае возвращает функцию (func) Вызов sum(2)()() или sum(2)(0)(), например, привёл бы к ошибке: Uncaught TypeError: sum(...)(...) is not a function потому что в этом случае func вернёт число (sum), а не функцию

Комментариев нет:

Отправить комментарий