javascript函数中的const变量是每次调用还是只初始化一次?

金泰亨

我想编写这样的代码。

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何只在构造函数中初始化一次变量?

Apache Flink RichAsyncFunction open()是否在初始化或每次函数调用时被调用一次?

如何在 Swift 中只初始化一次 Struct 中的变量

在php中仅初始化一次变量

SecureRandom:是否需要一次或每次初始化?

如何获得正确的框架,并且只在UITableViewCell中初始化一次?

在 Kotlin 中初始化属性,以便代码只执行一次

在 Swift 中只初始化一次 CoreData 实体

只初始化字典中的值一次,然后更新

每次在python 2.7中调用外部文件中的函数时是否重新初始化变量

仅在第一次调用递归函数时初始化值

JavaScript函数仅调用一次,而不是每次调用

变量用动态值初始化一次

如何一次初始化几个结构变量?

ES6模块中的静态变量(仅初始化一次)

从文件初始化的静态变量仅初始化一次

更新只调用一次的方法中的变量

如何只初始化 nouislider 一次?noUISlider — `未捕获的错误:滑块已经初始化`

从C中的函数初始化静态const变量

更改后在构造函数中初始化const变量

只调用一次函数?

只调用一次JS函数

ReactJS一次初始化

如何保证每个Controller都能看到模型并且只初始化一次?

有没有办法只初始化一次阵列?

Angular 2 提供使用类,如何只初始化一次父类

如何只初始化一次信号量?

每次调用函数时,函数内部的变量是否都会被销毁并重新初始化?

每次部署只能运行一次初始化容器