1
document.getElementById
的运行时间是多少?它最多是对数O(log(n))
,其中n是DOM中元素的数量,因为DOM是树。如果在解析HTML文档的过程中,所有具有ID的元素都存储在散列中,它也可以是常量O(1)
。我一直听到浏览器吹捧他们的品牌新的JavaScript引擎与改进的DOM访问,所以我甚至不知道所有浏览器的运行时间是否相同。document.getElementById的运行时间
我之所以这么问是因为我读这对Mozilla's WebGL tutorial:
我们在这里做的第一件事是获得 参考帆布,在一个名为画布全局变量积攒它 。 显然,如果您不需要重复引用画布 ,您可以避免保存此值,并且您还可以将其保存在局部变量 或对象的成员字段中。
如果Mozilla发出这个警告,做$('canvasId')并不像真正的廉价操作那么便宜。也许我应该重写我的代码:
$('id').writeAttribute('foo', 'bar');
console.info($('id').getWidth());
$('id').absolutize();
到:
var element = $('id');
element.writeAttribute('foo', 'bar');
console.info(element.getWidth());
element.absoltize();
我在您提供的报价中看不到警告。它只是解释你可以保持变量或不变。我肯定会在一个函数中使用局部变量,但会避免使用全局变量。但绝对第二个例子更快(问题是多少虽然)。 – 2011-03-20 22:23:42
您可能会发现这篇文章与您的兴趣相关:http://stackoverflow.com/questions/2711303/javascript-getelementbyid-lookups-hash-map-or-recursive-tree-traversal – jbrookover 2011-03-20 22:24:07