簡體   English   中英

是否可以從javascript中的函數內部定義全局常量變量?

[英]is it possible to define a global constant variable from inside a function in javascript?

我想做這樣的事情:

function defineGlobalConst(){
     const s = 10;
}

但我想從代碼中的任何地方訪問變量 s,因為我沒有輸入“const”

您可以像這樣定義一個全局變量

在瀏覽器中:

function defineGlobalConst(){
     window.s = 10;
}

在節點:

function defineGlobalConst(){
     global.s = 10;
}

如果你希望它是一個常量,你可以使用 defineProperty 和一個 getter:

Object.defineProperty(window, "s", { 
  get: () => 10,
  set: () => { throw TypeError('Assignment to constant variable.') },
});

您唯一的選擇是將值存儲在窗口中。 請務必至少命名您的值,因為它可能與窗口中已有的其他內容沖突:

// Create the namespace at the beginning of your program.
if (!window.MY_APP) {
  window.MY_APP = {};
}

window.MY_APP.s = 10;

可以通過使用反模式來解決您的問題。 請注意,我不提倡這種方法,但從純粹的“你能做到嗎”的角度來看,在函數中分配的任何未聲明的變量在默認情況下都會變成一個全局變量(當然這不會像你一樣創建一個常量已經問過了,但我想我還是會展示它):

 function foo(){ bar = "baz"; // implicit Global; } foo(); // Show that "bar" was, in fact added to "window" console.log(window.bar); // "baz" console.log(bar); // "baz"

暫無
暫無

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

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