2013-05-01 23 views
0

我讀取時間的分配以避免全局變量,並且本地變量也更快。 但是,如果我有我選擇id的元素分配,並需要他們在分配的功能? 每次執行該功能時,都會再次搜索DOM中的元素... 將元素緩存到全局是否更快?全局與局部變量如果經常需要分配元素

+0

或者,選項(3),把你的函數和變量放在一些包含函數中,這樣你就可以獲得你描述的沒有任何全局變量的緩存好處。 – nnnnnn 2013-05-01 08:49:15

回答

1

這是,但在這種情況下,您應該簡單地找到一次元素,然後將該集合作爲參數傳遞給所有需要它的函數。

這樣大家都很開心:DOM只搜索一次,而且還沒有全局變量。

+0

你有沒有一個不是JavaScript神的人的例子:-)。你的意思是'var SOMETHING = {}; SOMETHING.toggleThumbs = function(){/ * my stuff here * /};' – MrGlasspoole 2013-05-06 10:09:02

+0

@MrGlasspoole:我的意思是'var elements = [...,...,...]'其中'...'是例如'document.getElementById('foo')',然後將'elements'作爲參數傳遞給任意數量的函數。 – Jon 2013-05-07 10:12:12

0

或者,您可以使用一個全局函數來執行查找,其中包含一個緩存,以便不必重複讀取dom。例如:

function lookupElementById(id) { 
    if(lookupElementById.elementCache[id] !== undefined) lookupElementById.elementCache[id] = document.getElementById(id); 
    return lookupElementById.elementCache[id]; 
} 
lookupElementById.elementCache = {}