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