获取函数外部的元素

时间:2014-05-29 09:13:11

标签: javascript

在操作DOM元素时,将它们放入使用它们的函数中是否更快,或者只是一次性获取它们并将它们声明为全局变量?例如,如果我们必须多次使用ID为'order'的元素,

这会更快,

var ORDER = document.getElementById('order');
function test() {
    ORDER.onchange = // manipulate ORDER
}

或者这更快

function test() {
   var ORDER = document.getElementById('order');
   ORDER.onchange = // manipulate ORDER
}

我问,因为宣布这么多全局变量通常是不好的做法,但我不能帮助但是认为获得一次元素并将其分配给全局变量会更快而不是一次又一次地为每个函数调用。

3 个答案:

答案 0 :(得分:4)

只调用一次document.getElementById比每次调用都快。但是getElementById应该是一个相当快的函数,所以除非你在内循环中调用这个函数,否则我不会太担心它。

你知道Knuth所说的premature optimization,对吧?

答案 1 :(得分:1)

第一个会更快,因为ORDER变量已经被提升并且已赋值给它。

因此,当你调用函数时,函数执行得更快。

另外,当你把它放在一个函数中时,每次调用它时,getElementById()也会被调用,这很糟糕!

以上是为了更快或更慢。

但请确保您的变量名称不会像@Fred所说的那样污染全局名称空间!

答案 2 :(得分:0)

当然这取决于你会给他们的用途。

  • 如果您必须在代码中多次使用相同的元素,那就是它 更好地获得一次,这样你只需要检查一次DOM树。 另外,您可以保存代码行。无论如何,总会假设更好 性能

  • 否则,如果你使用这些元素,一次,两次......你可以得到它们 时间...

在我看来,我更喜欢第一种选择。它假设一个更好的性能和最干净的代码。