簡體   English   中英

如何從函數 Javascript 內部定義全局常量?

[英]How to a define a global constant from inside a function Javascript?

我正在構建一個由一組模塊組成的應用程序,這些模塊在應用程序引導時加載:

const MODULES = []

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

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

以上當然會引發錯誤。 我想要做的是僅在應用程序啟動時分配MODULE常量,然后它應該被修復。 這可能嗎?

由於我必須傳遞給registerModules的 config 變量,因此MODULES初始化必須在bootstrap內部進行。

如果您確實想:

  • 在尚未調用bootstrap()期間有一個已初始化但為空的MODULES數組,並且
  • 使MODULES填充后不可變,並且
  • 保持registerModules的當前函數簽名不變;

然后你可以這樣做:

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

如果您在調用bootstrap()之前不堅持MODULES的存在,並且您願意將該信息存儲在一個對象中,那么您可以按以下步驟進行:

const globals = {};

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

一旦您對globals感到滿意,您還可以凍結該對象:

Object.freeze(globals);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM