From Javascript's Kiss
在循环中操作中,如果有涉及到外部函数的,可以将外部 函数的引用储存到一个局部变量里,之后进行循环操作。如果在循环中每个循环执行的时间较长的时候,可是使用一个间隔为0的setTimeout定时器。
var work = function(i){
var div = null;
document.getElementById("div").appendChild((function(){
div = document.createElement("div");
div.innerHTML = "div" + i;
return div;
})());
div = null;
}
function test(){
Watch.start("Not local");
for (var i = 0; i < 10000; i++) {
work(i);
}
Watch.stop();
Watch.start("Local")
var w = work;
for (var i = 0; i < 10000; i++) {
w(i);
}
Watch.stop();
Watch.start("Not local setTimeout");
for (var i = 0; i < 10000; i++) {
setTimeout(function(){
work(i);
}, 0);
}
Watch.stop();
Watch.start("Local setTimeout")
var w = work;
for (var i = 0; i < 10000; i++) {
setTimeout(function(){
w(i);
}, 0);
}
Watch.stop();
}
onload = function(){
test();
Watch.report();
}