gpt4 book ai didi

javascript - 如何从 JavaScript 函数内部定义全局常量?

转载 作者:行者123 更新时间:2023-12-02 21:39:03 25 4
gpt4 key购买 nike

我正在构建一个由一组模块组成的应用程序,这些模块在应用程序引导时加载:

const MODULES = []

function registerModules(config) {
return modules.map(module => (new module(config)).install());
}

function bootstrap() {
MODULES = registerModules({...});
}

上面的内容当然会引发错误。我想要做的是仅在应用程序启动时分配 MODULE 常量,但随后应该修复它。这可能吗?

MODULES 的初始化必须在 bootstrap 内部进行,因为我必须将配置变量传递给 registerModules

最佳答案

如果您确实想要:

  • 在尚未调用 bootstrap() 期间有一个已初始化但为空的 MODULES 数组,并且
  • 一旦填充 MODULES 就使其不可变,并且
  • 保持registerModules当前函数签名不变;

那么你可以这样做:

function bootstrap() {
Object.freeze(Object.assign(MODULES, registerModules({...})));
// OR:
// MODULES.push(...registerModules({...}));
// Object.freeze(MODULES);
}

如果您不坚持 MODULES 调用 bootstrap() 之前存在,并且您可以存储该信息在对象内部,那么您可以按如下方式进行:

const globals = {};

function bootstrap() {
globals.MODULES = registerModules({...});
Object.freeze(globals.MODULES);
}

一旦您对全局变量感到满意,您还可以卡住该对象:

Object.freeze(globals);

关于javascript - 如何从 JavaScript 函数内部定义全局常量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60414792/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com