3 回答

TA貢獻1783條經驗 獲得超4個贊
鑒于您當前的代碼,如果您希望能夠getCount多次調用它是不可能的- 您count在最高級別進行了解構,一個原語。改變它的唯一方法是重新分配外部變量getCount,這是一個壞主意。
一個簡單的解決方法是不將一個原語放在數組的第一個位置,而是使用一個返回內部的函數_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 */

TA貢獻1993條經驗 獲得超6個贊
您可以使用具有已實現toString方法的obect,并在原始期望環境中使用此變量來獲取計數。
function getCount() {
let _count = 1;
const _updateCount = () => {
_count = _count + 1;
};
return [{ toString: () => _count }, _updateCount];
}
const [count, updateCount] = getCount();
console.log(count + '');
updateCount();
console.log(count + '');

TA貢獻1874條經驗 獲得超12個贊
范圍_count不同于count您嘗試的范圍console.log
要顯示_count您必須使用函數訪問它的值,如下所示:
function getCount() {
// This is visibile only to the function getCount
let _count = 1;
const _updateCount = () => {
_count = _count + 1;
};
const _showCount = () => {
console.log(_count);
}
return [_count, _updateCount, _showCount];
}
// Count here will be a different variable
const [count, updateCount, showCount] = getCount();
console.log(count); /* <===== Expect initial count to be 1 */
updateCount();
showCount(); // Will show ===> 2
updateCount();
showCount(); // Will show ===> 3
添加回答
舉報