我想撰寫這樣的代碼。
function cokeDispencer(id) {
const dict = {1:"sprite", 2:"pepcy", ...} // Some JSON. It might be bigger.
return dict[id];
}
當然, dict[id] 做同樣的事情要簡單得多,但我想把 dict 物件放在函式內部,這樣其他函式就不能訪問這個 dict 物件。我想知道的是物件字典在每次呼叫時都會被初始化。據我所知,用 C/C 撰寫的函式每次呼叫時都會初始化它的區域變數,靜態變數除外。如果是這樣,有沒有辦法像靜態變數 C/C 一樣初始化 const 變數?
uj5u.com熱心網友回復:
dict是的,每次該函式運行時,您都會創建一個新物件。
您可以改為創建一個IIFE - 一個立即運行并“關閉”物件的函式,并可以回傳一個訪問所需屬性的函式。
const cokeDispencer = (() => {
const dict = {1:"sprite", 2:"pepcy"} // Some JSON. It might be bigger.
return id => dict[id];
})();
console.log(cokeDispencer(1));
這幾乎與
const dict = {1:"sprite", 2:"pepcy"} // Some JSON. It might be bigger.
const cokeDispencer = id => dict[id];
console.log(cokeDispencer(1));
除了 IIFE 確保只有cokeDispener函式可以訪問物件。
如果您只想在第一次呼叫函式時創建物件,而不是之前,您可以使用非常相似的技術來分配一個變數,該變數僅在需要時分配給函式。
const cokeDispencer = (() => {
let dict;
return (id) => {
if (!dict) {
dict = {1:"sprite", 2:"pepcy"} // Some JSON. It might be bigger.
}
return dict[id];
};
})();
console.log(cokeDispencer(1));
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/478474.html
標籤:javascript 功能 局部变量 静态变量
上一篇:div不跟隨滑鼠
