我知道全局变量在JS中被认为是邪恶的。但是,我习惯将DOM元素存储在全局变量中以便于访问。
让我们说,全局变量的替代方法就是闭包。因为它们提供了创建范围的方法,它不允许外部影响来修改内部变量。但是在DOM元素的情况下这是必要的吗?将元素存储在全局变量中是否有任何危险或缺点?
由于我发现文章解释了为什么全局变量是邪恶的,而不是全局变量我使用手动参考。
所以而不是:
e = document.getElementById('example');
e.value = 'abc';
我用:
function e(id)
{
return document.getElementById(id);
}
e('example').value = 'abc';
这是合法的选择吗?
答案 0 :(得分:1)
DOM Elements,就其本身而言是全球性的。
因为您的文档是一个全局对象,无论如何都可以从应用程序的任何位置访问它们。
您正在做的事情很好,它有助于代码的重用,但它不能解决全局范围的任何问题 - 这意味着,无论您采用此策略,您的DOM元素都可以在整个应用程序中访问或不。 :)
然而,另一个问题是,如果您在三个不同的变量中存储对同一DOM对象的引用,并且您更改了这三个变量中的一个。这将导致对剩余的两个进行DOM操作。 像任何其他语言/技术一样,这不是技术本身的问题。这是由于没有遵循良好的编码精神而引起的问题。 :)