今天在看《高性能javascript》这本书,看到达夫设备优化的代码:
do{}while(--n);这里前减,假设是12长度的循环,iterations取整是1,那怎么也不会有第二次8次的循环吧?
//长度
var a=[1,2,3,4,5,6,7,8,9,10,11,12];
var iterations=Math.floor(a.length/8);
console.log("iterations:"+iterations);
var startAt=a.length%8;
console.log("取余:"+startAt);
var count=0;
do{
switch(startAt){
case 0: console.log(count++);
case 7: console.log(count++);
case 6: console.log(count++);
case 5: console.log(count++);
case 4: console.log(count++);
case 3: console.log(count++);
case 2: console.log(count++);
case 1: console.log(count++);
}
startAt=0;
}while(--iterations);//这里前减,不是就=0了,没有进入下一次循环,最终就4次循环。
结果:
而我改成while(iterations--)
,就可以循环全部了,到底咋回事,难道书上印错了,还是我眼睛花了,就大神指点。
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…