我知道在JS中全局变量被认为是邪恶的,但是为了方便访问,我习惯将DOM元素存储在全局变量中。

假设全局变量的替代方法是闭包,因为它们提供了创建范围的方法,该范围不允许外部影响来修改内部变量,但是在DOM Elements的情况下是否有必要?在全局变量中存储元素是否存在任何危险或不利之处?

自从我找到了解释为什么全局变量为何有害的文章之后,我使用的是手册参考,而不是全局变量。

所以代替:

e = document.getElementById('example');
e.value = 'abc';


我用:

function e(id)
{

 return document.getElementById(id);
}
e('example').value = 'abc';


这是合法的选择吗?

最佳答案

DOM元素本身具有全球性。

由于您的文档是全局对象,因此无论如何都可以从应用程序中的任何位置访问它们。

您正在做的事情是好的,它可以促进代码的重用,但不能解决任何全局范围的问题-也就是说,无论您是否采用此策​​略,DOM元素在整个应用程序中都是可访问的。 :)

但是,另一个问题是,例如,如果将对同一DOM对象的引用存储在三个不同的变量中,那么您将更改这三个变量之一。这也将导致对其余两个对象的DOM操作。
像任何其他语言/技术一样,这也不是技术本身的问题。这是由于未遵循良好的编码方式引起的问题。 :)

07-24 09:44
查看更多