作为初学者,我被告知要避免引起全局变量 名称可以随着项目的增长而特意发生冲突。但我也告诉过 编码是关于效率的,你不应该做两次。 避免全局变量让我声明了相同的变量 在不同的功能,这感觉是错误的事情。 怎么走?谢谢,平安和爱。
//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
}
答案 0 :(得分:4)
这实际上取决于访问one
和two
的方式。你总是可以关闭像这样的盒子变量:
var one,two;
(function(){
var box = document.getElementById('box');
one = function(){
//use box
};
two = function(){
//use box
};
})()
答案 1 :(得分:1)
重新宣布你的功能进行论证
function one(box){
//DO SOMETHING WITH BOX
}
这也具有将盒子的位置移动到一个地方的优点。声明或它自己的功能。这又意味着,如果您更改了如何定位框元素,则您不必在使用它的所有方法中更改它,但只能在一个地方进行更改。
答案 2 :(得分:1)
JavaScript非常依赖Closures。全局命名空间中的函数也是闭包。使用OOP方法(关于OOP encapsulation)或(如评论中已经提到的)Module模式。编程的圣杯是抽象(除非你考虑零和更优雅),OOP的封装是主要方法之一。例如:
var my_object = {
box: document.getElementsById('box'),
one: function() { }, // manipulate this.box
two: function() { }, // manipulate this.box
};