Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 获取函数外部的内部元素_Javascript - Fatal编程技术网

Javascript 获取函数外部的内部元素

Javascript 获取函数外部的内部元素,javascript,Javascript,在操作DOM元素时,是将它们放入所使用的函数中更快,还是一次将它们全部获取并声明为全局元素更快?例如,如果我们必须多次使用ID为'order'的元素 这会更快吗 var ORDER = document.getElementById('order'); function test() { ORDER.onchange = // manipulate ORDER } 还是更快 function test() { var ORDER = document.getElementById

在操作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
}

我这么问是因为声明这么多全局变量通常是不好的做法,但是我不得不认为,一次获取一个元素并将其分配给一个全局变量要比每次函数调用一次又一次地获取它快。

第一个更快,因为
ORDER
变量已经被提升,并且有一个值被分配给它

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

此外,当您将其放入函数中时,每次调用它时,
getElementById()
也会被调用,这是错误的

以上是更快或更慢的


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

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

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

此外,当您将其放入函数中时,每次调用它时,
getElementById()
也会被调用,这是错误的

以上是更快或更慢的


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

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


你知道Knuth说了什么,对吧?

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


你知道Knuth说了些什么,对吧?

当然,这取决于你对它们的使用

  • 如果必须在代码中多次使用相同的元素,那么 最好只检查一次,这样只检查一次DOM树。 另外,您还可以保存代码行。不管怎样,总会有更好的想法 表演

  • 否则,如果你使用这些元素,一次,两次。。。每个人都可以得到 时间


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

当然,这取决于您将给它们的用途

  • 如果必须在代码中多次使用相同的元素,那么 最好只检查一次,这样只检查一次DOM树。 另外,您还可以保存代码行。不管怎样,总会有更好的想法 表演

  • 否则,如果你使用这些元素,一次,两次。。。每个人都可以得到 时间


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

污染全局名称空间从来都不是一个好主意。
getElementById()
的性能足够好,您不必担心这一点。或者您可以在函数外部保持
顺序,但将所有内容都封装在一个自调用匿名函数中。即使第一种方法很快,它也取决于您实际需要实现什么。如果
顺序
在整个应用程序中保持不变,则第一种方法是好的。但是,如果在应用程序运行时,
顺序
随时都会改变,那么第二种方法将为您提供更准确的结果。
getElementById()
的性能足够好,您不必担心这一点。或者您可以在函数外部保持
顺序,但将所有内容都封装在一个自调用匿名函数中。即使第一种方法很快,它也取决于您实际需要实现什么。如果
顺序
在整个应用程序中保持不变,则第一种方法是好的。但若在应用程序运行时,
顺序
随时都会发生变化,那个么第二种方法将为您提供更准确的结果。