Javascript 列表。项目(0)与列表[0]

Javascript 列表。项目(0)与列表[0],javascript,performance,Javascript,Performance,document.getElementsByTagName('a')。项(0) 及 document.getElementsByTagName('a')[0] 将返回相同的结果 前者比后者快吗?自制性能测试: 这种差异似乎可以忽略不计。在大多数情况下,第二种方法的性能更好,但是如果您了解循环执行的频率,这并不重要 铬: 方法:~260ms 方法:~170ms item函数是NodeListDOM对象的成员节点列表类似于数组,但它们不是真正的数组(例如:它们是活动的、只读的、缺少数组函数) 性能差

document.getElementsByTagName('a')。项(0)

document.getElementsByTagName('a')[0]

将返回相同的结果


前者比后者快吗?

自制性能测试:

这种差异似乎可以忽略不计。在大多数情况下,第二种方法的性能更好,但是如果您了解循环执行的频率,这并不重要

铬:

  • 方法:~260ms
  • 方法:~170ms

  • item函数是
    NodeList
    DOM对象的成员<代码>节点列表类似于数组,但它们不是真正的数组(例如:它们是活动的、只读的、缺少数组函数)


    性能差异应该可以忽略不计。

    对于更实际的示例,此技术具有最佳性能。看看尼古拉斯·扎卡斯的作品,雅虎!有关更多示例:

    var cachedDOMquery = Array.prototype.slice.apply(document.getElementsByTagName('a')),
    i = cachedDOMquery.length,
    item;
    while(i--){
        item = cachedDOMquery[i];
        alert(item.href);
    }
    

    是的,我在发帖前读过。。。我建议您将重点放在更重要的优化上。在Firefox 3.6.6中尝试JSFIDLE,第一种方法得到大约250,第二种方法得到475。ie8:test1:5000+test2:~2000的结果。当IE要求我在测试2期间停止运行脚本时,我甚至不得不打“否”,而且速度仍然快得多。不管结果如何,都不重要。如果您使用Javascript(在Web浏览器上)来提高性能,那么您使用的语言是错误的。你应该把注意力放在其他方面,比如可读性。@HoLyVieR只是一篇博客文章引发的一个问题。我觉得差别很小。@HoLyVieR:你声称Javascript中的性能根本不重要,这和试图在浏览器中实现实时导弹控制系统一样短视。事实是,即使在像C这样的“高性能”语言中,可读性也是一个巨大的问题。相反,即使是在相对奢华的环境中,比如Javascript Web应用程序,也应该采取合理的措施,不要浪费用户的系统资源。这并不意味着忽略可读性,但是,比如说,如果一个循环固定在CPU上,那么你可能希望记忆,而不是每秒数百万次调用一个昂贵的函数。@HoLyVieR:你说过,“不管结果如何,都不重要。”毫无保留地说,在Javascript中性能并不重要。因为如果性能很重要,那么如果一个等效操作的执行速度明显快于另一个,那么这当然很重要。@holyvier也许我是。你不知道我或其他人会在哪里应用这个。你的话太天真了。正如Felix的简单演示所指出的,IE8中处理时间的差异(这是我在工作中得到的全部)大约为3秒。