为了避免创建全局变量,可以将所有变量分配给一个对象吗
Is it ok to assign all variables to an object for a way to avoid creating global variables?
1。例如,如果我在声明变量之前定义了一个对象,然后将它们作为对象的一部分调用,如下所示。。。
//Global object
var Global = [];
//Every var thereafter ...
Global.variable1 = some value;
Global.variable2 = some value;
Global.variable3 = some value;**
是的,这被称为namespacing
。它创建一个全局(可能应该有一个比您使用的更唯一的名称),然后将您的所有全局状态作为一个属性放在该全局上。
这是一种被广泛使用和推荐的做法,由jQuery等库使用,这些库被设计为与许多其他代码兼容(可能有自己的全局)。这种做法限制了您自己的全局变量的使用,从而减少了与其他代码冲突的机会。
您通常会将单个全局设置为Object
,而不是像以下这样的数组:
var myGlobal = {};
myGlobal.prop1 = "whatever";
还有其他方法可以通过使用闭包来封闭代码和状态来限制真正全局的变量数量。这是您提出的namespacing
的替代技术。
它是这样工作的:
(function() {
var variable1 = some value;
var variable2 = some value;
var variable3 = some value;
// all your code here that uses variable1, variable2 and variable3
})();
这些变量实际上是立即调用的函数表达式的局部变量(缩写为IIFE,它本质上只是一个匿名函数,为了创建具有私有变量的函数范围而立即执行)。
因为所有的代码都在同一个函数范围内,所以它们就像代码的全局变量一样工作,而实际上并不是全局变量。其他代码不能与这些变量冲突或访问这些变量,因此它也实现了隐私。
这是人们使用立即调用函数表达式(IIFE)的原因之一。通过将代码放入一个调用自身的匿名函数中,您不必担心变量会污染全局命名空间。
它看起来像这样:
(function() {
var variable1 = 'some value'; // This variable is not global
var variable2 = 'some value'; // This variable is not global
var variable3 = 'some value'; // This variable is not global
})();
相关文章:
- Javascript 将变量分配给警报
- Javascript变量分配-按类别
- 为变量分配多个nodejs导出返回值时出现问题
- 使用Javascript中的回调处理变量分配
- 为了避免创建全局变量,可以将所有变量分配给一个对象吗
- 使用一个表达式将两个变量分配给相同的值
- 将变量分配给函数在JavaScript中不起作用
- 如何在yahoo weather中将变量分配到javascript src脚本中
- 服务变量分配了数据,但在访问时始终未定义
- 如何在用户单击提交按钮时为变量分配任意值
- 将JavaScript变量分配给同一页面上的PHP变量
- Javascript是否为具有未定义值的变量分配32位内存
- 为变量分配回调函数
- 如何在javascript中为单个变量分配多个值
- 将全局变量分配给以下 Javascript
- 如何将变量分配给链接中包含的信息?(Javascript/HTML)
- 如果我为 JS 变量分配一个新值,它会破坏它的绑定吗?
- 如何将 javascript 变量分配给隐藏的输入
- 为变量分配有限集合中的随机元素
- 如何使用由多行组成的 django 模板变量分配 javascript 变量