我想在函式中使用靜態變數,即符合以下要求的變數:
- 它在對該函式的不同呼叫中保留其價值
- 它僅在該功能的范圍內是已知的(可訪問的)
這是我如何實作這些要求的通用示例:
function func(state, input) {
switch (state) {
case 'x':
this.temp = calc(input);
return this.temp;
case 'y':
return this.temp;
}
}
它作業正常,但我想知道它是否是一種自定義方式,以及是否有更好的方式(更清潔、更簡單、更好的做法等)。
uj5u.com熱心網友回復:
該代碼不符合您的第二個標準。任何可以訪問物件的東西this都可以訪問this.temp. (從問題中的代碼來看,this甚至可能指的是全域物件,在這種情況下temp是全域可訪問的。)
如果您需要func存盤真正的私人資訊,標準的方法是使用閉包:
const func = (() => {
let temp;
return function func(state, input) {
switch (state) {
case 'x':
temp = calc(input);
return temp;
case 'y':
return temp;
}
};
})();
當代碼運行時運行一個匿名函式,該函式回傳func分配給func常量,并使用該呼叫創建的閉包來提供func一個真正的私有temp變數。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/464592.html
標籤:javascript
上一篇:“物件”型別上不存在屬性“名字”
