Javascript 避免全局变量意味着必须在不同的函数中声明相同的变量?
作为一个初学者,我被告知要避免全局变量 随着项目的发展,名称可能会发生特别的冲突。但也有人告诉我 编码是关于效率的,你不应该做两次。 避免使用全局变量会使我声明相同的变量 在不同的功能中,这感觉是错误的。 怎么走?谢谢你,和平与爱Javascript 避免全局变量意味着必须在不同的函数中声明相同的变量?,javascript,Javascript,作为一个初学者,我被告知要避免全局变量 随着项目的发展,名称可能会发生特别的冲突。但也有人告诉我 编码是关于效率的,你不应该做两次。 避免使用全局变量会使我声明相同的变量 在不同的功能中,这感觉是错误的。 怎么走?谢谢你,和平与爱 //GLOBAL SPACE - no variables here, wanna be a good boy function one(){ var box = document.getElementsById('box'); //DO SOMET
//GLOBAL SPACE - no variables here, wanna be a good boy
function one(){
var box = document.getElementsById('box');
//DO SOMETHING WITH BOX
}
function two(){
var box = document.getElementsById('box');
//DO SOMETHING ELSE WITH BOX
}
这实际上取决于如何访问
one
和two
。但是,您可以始终关闭box变量,如下所示:
var one,two;
(function(){
var box = document.getElementById('box');
one = function(){
//use box
};
two = function(){
//use box
};
})()
重新声明函数以接受参数
function one(box){
//DO SOMETHING WITH BOX
}
这还有一个优点,就是只将长方体的位置移动到一个位置。声明或它自己的函数。这同样意味着,如果您更改如何定位box元素,则不必在所有使用它的方法中更改它,而只需在一个位置进行更改。JavaScript严重依赖于。全局命名空间中的函数也是闭包。使用OOP方法(关于OOP)或(如注释中所述)模式。编程的圣杯是抽象的(除非你考虑零和更优雅),而OOP封装是主要的方法之一。例如:
var my_object = {
box: document.getElementsById('box'),
one: function() { }, // manipulate this.box
two: function() { }, // manipulate this.box
};
如果您了解javascript中的名称空间模式,可以最大限度地减少冲突:这可以帮助您避免重复缓存同一变量,并将代码保存在组中。在您的特定情况下,您可以将代码包装在一个匿名函数中并定义(如果合理,还可以进行初始化)您的共同变数。感谢大家为世界上最好的客户服务。我现在明白了,没有一个魔术,只有一些不同的方法和解决办法。在我的例子中,匿名函数应该有相当长的路要走。