我想编写这样的代码。
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 变量?
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));
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句