Какие синтаксические ошибки вызывают возвращение «текста» функции в этом JS-замыкании, а не его приращение? - PullRequest
0 голосов
/ 04 декабря 2018

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

const count = () => {
  let countUp = function(n) {
    return function() {
      n += 1;
      return n;
    }
  };
  return countUp;
};

console.log(count());

Вывод:

function(n) {
    return function() {
      n += 1;
      return n;
    }
  }

1 Ответ

0 голосов
/ 04 декабря 2018

Ниже приведен скрипт ES5, который будет увеличивать счетчик при каждом вызове.Приведенный ниже код использует немедленно вызванные выражения функций и замыкания .

//The number we want to start counting up from
var startAt = 0;

//Immediately invoke the anonymous outer function - this will return a function into our "count" variable. The closure will retain access to local variable j which is passed as an argument.
var count = (function(i) {
  var j = i;
  return function() {
    j += 1;
    return j;
  }
}(startAt));

//Call count 10 times
var k;
for (k = 0; k < 10; k++) {
  console.log(count());
}

Ниже приведен тот же код, написанный с использованием более краткого синтаксиса ES6:

const count = ((i) => {
  var j = i;
  return () => ++j;
})(0);

for (let k = 0; k < 10; k++) {
  console.log(count());
}
...