3 回答
TA贡献1827条经验 获得超4个赞
您可以像这样定义一个全局变量:
在浏览器中:
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.') },
});
TA贡献1725条经验 获得超7个赞
您唯一的选择是将值存储在窗口中。请确保至少为您的值命名空间,因为它可能与窗口中已有的其他内容冲突:
// Create the namespace at the beginning of your program.
if (!window.MY_APP) {
window.MY_APP = {};
}
window.MY_APP.s = 10;
TA贡献1834条经验 获得超8个赞
使用反模式可以解决您的问题。请注意,我不提倡这种方法,但从纯粹的“你能做到吗”的角度来看,在函数中分配的任何未声明的变量默认情况下都会成为全局变量(当然这不会像你一样创建常量问过,但我想我还是会展示它):
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"
添加回答
举报