为了账号安全,请及时绑定邮箱和手机立即绑定

是否可以在 javascript 的函数内部定义一个全局常量变量?

是否可以在 javascript 的函数内部定义一个全局常量变量?

动漫人物 2023-04-20 10:42:28
我想做这样的事情:function defineGlobalConst(){      const s = 10; }但我想从代码中的任何地方访问变量 s,因为我没有输入“const”
查看完整描述

3 回答

?
GCT1015

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.') },

});


查看完整回答
反对 回复 2023-04-20
?
qq_遁去的一_1

TA贡献1725条经验 获得超7个赞

您唯一的选择是将值存储在窗口中。请确保至少为您的值命名空间,因为它可能与窗口中已有的其他内容冲突:


// Create the namespace at the beginning of your program.

if (!window.MY_APP) {

  window.MY_APP = {};

}


window.MY_APP.s = 10;


查看完整回答
反对 回复 2023-04-20
?
MMMHUHU

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"


查看完整回答
反对 回复 2023-04-20
  • 3 回答
  • 0 关注
  • 127 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信