Учитывая ваш текущий код, это невозможно, если вы хотите иметь возможность вызывать getCount
более одного раза - вы деструктурировали count
, примитив верхнего уровня.Единственный способ изменить это - переназначить внешнюю переменную внутри getCount
, что является плохой идеей.
let count;
function getCount() {
count = 1;
const _updateCount = () => {
count = count + 1;
};
return _updateCount;
}
const updateCount = getCount();
console.log(count); /* <===== Expect initial count to be 1 */
updateCount();
console.log(count); /* <===== After calling updateCount I Expect count to be 2 */
Простым решением было бы не поместить примитив в первое место в массиве, а вместо этого использовать функцию, которая возвращает внутреннюю часть _count
:
function getCount() {
let _count = 1;
const _updateCount = () => {
_count = _count + 1;
};
return [() => _count, _updateCount];
}
const [getInternalCount, updateCount] = getCount();
console.log(getInternalCount()); /* <===== Expect initial count to be 1 */
updateCount();
console.log(getInternalCount()); /* <===== After calling updateCount I Expect count to be 2 */