我读了很多次,以避免全局变量,而且局部变量更快。但如果我有很多元素,我选择的id和需要他们在分配函数吗?每次执行函数时,DOM都会再次搜索元素…将元素缓存在全局不是更快吗?
是的,但是在这种情况下,您应该简单地找到一次元素,然后将集合作为参数传递给需要它的所有函数。
这样每个人都很高兴:DOM只搜索一次,仍然没有全局变量。
或者,您可以使用单个全局函数来执行查找,该函数包含一个缓存,因此不必重复读取dom。例子:
function lookupElementById(id) {
if(lookupElementById.elementCache[id] !== undefined) lookupElementById.elementCache[id] = document.getElementById(id);
return lookupElementById.elementCache[id];
}
lookupElementById.elementCache = {}