Как определить переменную and ++ внутри области действия функции - PullRequest
0 голосов
/ 27 февраля 2020

У меня есть функция, которая возвращает некоторые единицы. Например:

let id = 0;
const playerFactory = (name) => {
   id++;
   return {name, id};
}

Есть ли способ определить id и id ++ это с созданием новых игроков внутри области действия функции? Спасибо!

Ответы [ 2 ]

3 голосов
/ 27 февраля 2020

Вложите функцию внутри IIFE.

const playerFactory = function() {
  let id = 0;
  return function(name) {
    id++;
    return {
      name,
      id
    };
  }
}();

console.log(playerFactory("Fred"));
console.log(playerFactory("Joe"));
2 голосов
/ 27 февраля 2020

В этом случае использования в игру вступают затворы. Вам нужно создать функцию, которая возвращает функцию; затем каждый раз, когда вызывается функция создателя, создается новый i с желаемой областью действия:

function createPlayerFactory() {
  let i = 0;
  return (name) => {
    id++;
    return {name, id};
  }
}

const playerFactory = createPlayerFactory();

playerFactory("A"); // {name: "A", id: 0}
playerFactory("B"); // {name: "B", id: 1}
playerFactory("C"); // {name: "C", id: 2}
...