首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript全局变量

Javascript全局变量
EN

Stack Overflow用户
提问于 2010-11-13 17:40:13
回答 3查看 5K关注 0票数 3

如何将更改变量创建为全局变量?

所以,就像:

代码语言:javascript
复制
function globVar(variable){
   window.variable;
}

因此,通过这种方式,我也可以在自动模式下创建全局变量,也可以更容易地为自己创建它们:)

编辑

例如,我可以像这样创建一个全局变量:globVar('myVariable');,然后将myVariable添加到全局变量中。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-11-13 18:22:59

很抱歉这么说,但是你得到的答案是你应该远离的坏习惯。一个更好的编程实践(也许是正确的编程实践)是伪命名空间--您的全局变量,这样就不会混淆全局命名空间/范围。这样做的原因是使代码更易于管理,更重要的是,如果/当应用程序变得很大时,可以使您的生活更加轻松。定义命名空间的一个简单机制是使用道格拉斯·克罗克福德( Douglas )创建的模块模式。

下面是一个简单的例子:

代码语言:javascript
复制
var myNamespace = function(){
  var o = {};
  var globals = {};

  var setGlobVar = function(name, value) {
    globals[name] = value;
  };

  var getGlobVar = function(name) {
    if (globals.hasOwnProperty(name)) {
      return globals[name];
    } else {
      // return null by default if the property does not exist 
      return null;
    }
  };

  o.setGlobVar = setGlobVar;
  o.getGlobVar = getGlobVar;
  return o;
}();

要使用它,只需将其称为对象的方法。

代码语言:javascript
复制
myNamespace.setGlobVar("secret_msg", "Dumbledore dies, so does Hedwig");
myNamespace.getGlobVar("secret_msg");

如果您想简化访问变量的方式,也可以公开globals变量,而不是使用setGlobVargetGlobVar方法。

重点是尽可能避免在全局命名空间(即window对象)中定义变量,方法是创建自己的命名空间。这减少了名称冲突、意外重写或重写以及全局命名空间混乱的可能性。

一种更简单的方法就是简单地定义一个对象并增强它的属性。

代码语言:javascript
复制
var globals = {};
globals.SECRET_MSG = "Snape is not a traitor"

尽管我会通过将globals封装到特定于我的应用程序的命名空间来扩展这种方法。

代码语言:javascript
复制
var myNamespace = {};
myNamespace.globals = {};
myNamespace.globals.SECRET_MSG = "Snape is not a traitor"

注意:这实际上与我建议的原始模块模式方法相同,只是没有getset访问器方法,而且编码方式不同。

票数 10
EN

Stack Overflow用户

发布于 2010-11-13 17:52:37

globVar('myVar','myVarValue')的形式调用函数

代码语言:javascript
复制
function globVar(variable,value){
   window[variable] = value;
}

下面是一个小摆设:http://jsfiddle.net/emQQm/

票数 1
EN

Stack Overflow用户

发布于 2010-11-13 17:41:52

window.variable =变量;

不明白什么是“自动模式”,所以这可能不是你想要的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4173835

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档