避免全局变量意味着被迫在不同的函数中声明相同的变量?

时间:2015-08-20 20:05:28

标签: javascript

作为初学者,我被告知要避免引起全局变量 名称可以随着项目的增长而特意发生冲突。但我也告诉过 编码是关于效率的,你不应该做两次。 避免全局变量让我声明了相同的变量 在不同的功能,这感觉是错误的事情。 怎么走?谢谢,平安和爱。

//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

}

3 个答案:

答案 0 :(得分:4)

这实际上取决于访问onetwo的方式。你总是可以关闭像这样的盒子变量:

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
};