我這樣做:Javascript:GetElementById - 何時DOM命中?
var hpl = doc.getElementById("hpl");
,然後這樣的:
hpl.style.height = 28 + "px";
我的問題:我在訪問DOM兩次,第一次引用的元素,然後第二次設置樣式高度?
如果是這樣,那麼我是否正確地斷定這對於DOM調用是低效的,儘管它很好地被最小化了。
var hpl = document.getElementById("hpl");
if (test === "Abel") {
hpl.style.height = 28 + "px";
} else {
hpl.style.height = 42 + "px";
}
所以這將是在速度方面更好:
if (test === "Abel") {
document.getElementById("hpl").style.height = 28 + "px";
} else {
document.getElementById("hpl").style.height = 42 + "px";
}
我有一個jsperf here這表明不存在真正的區別,但我想了解這背後的理論。 謝謝。
計算機現在每天可以執行每秒數百萬次的「document.getElementById」函數。不要浪費你的時間。無論如何,DOM元素在調用後被緩存。 – gdoron
將'getElementById'保存在本地變量中並重復它之間的任何性能差異比保存到本地的更重要的是更清潔,更少的代碼。這裏使用局部變量 - 並不是因爲速度更快(儘管它非常小,並且獨立於瀏覽器可能實現或可能不實現的任何getElementById優化),但是因爲它讀得更好。 (它也不太容易出錯 - 你不會輸入「hpl」兩次,輸入錯字的可能性更大,更不用說其他重複字符了。) –
謝謝大家。 – Nick