-1
想問一個更有效的功能嗎?JavaScript perfomance
#1
function moveNode (node) {
setTimeout(function() {
node.style.top = (node.offsetTop+2) + 'px';
moveNode(node);
},50);
}
#2
function moveNode (node, distance) {
setTimeout(function() {
node.style.top = (distance) + 'px';
moveNode(node,distance+2);
},50);
}
在第一個功能,我們取node.offsetTop
財產每次調用,但要記住較少的數據。在第二個函數中,我們可以通過node.offsetTop
屬性作爲distance
參數只有一次,但請記住它是從調用中調用。所以我不知道這種方式更有效。假設這個函數會(例如在setInterval
)被稱爲不同node
參數多次
代碼片段中沒有遞歸。性能差異可以忽略不計,但具有''''''距離'''的那個可靠性更高。 – tevemadar
@tevemadar所以當內部函數啓動時,程序忘了父函數? – nikolay
一次將保留一個閉包(內部函數訪問'''節點''和第二個變體'''distance'''),但它不會使控制流遞歸。遞歸意味着控制至少在理論上返回到'''moveNode''',在運行第二,第三等時間之後。 – tevemadar