реализовать на js функцию addOne

Как реализовать на js функцию addOne, чтоб была возможность выводить результат в таком виде:

console.log(addOne().getResult()) // 1
console.log(addOne()()().getResult()) // 3
console.log(addOne()().getResult()) // 2

Ответы (1 шт):

Автор решения: Anton Shchyrov

function addOne() {
  let idx = 1;
  const res = function() {
    idx++;
    return res;
  };
  res.getResult = function() {
    return idx;
  };
  return res;
}

console.log(addOne().getResult()) // 1
console.log(addOne()()().getResult()) // 3
console.log(addOne()().getResult()) // 2

Идея: функция addOne() возвращает функцию, которая при каждом вызове увеличивает внутренний счетчик. А т.к. функции в JS - это объекты, то возвращаемый объект еще содержит поле-метод getResult, который возвращает текущее значение счетчика

→ Ссылка