javascript tip: Duff's Device

偶尔在网上闲逛的时候,总能发现一些短小精悍的代码,优雅简练,下面这个就是一个例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var iterations = Math.ceil(values.length / 8);
var startAt = values.length % 8;
var i = 0;

do {
switch(startAt){
case 0: process(values[i++]);
case 7: process(values[i++]);
case 6: process(values[i++]);
case 5: process(values[i++]);
case 4: process(values[i++]);
case 3: process(values[i++]);
case 2: process(values[i++]);
case 1: process(values[i++]);
}
startAt = 0;
} while (--iterations > 0);

原来是用C实现的,这里改成Javascript版本。它的作用是用来优化对一个大数组的循环访问。如果对Javascript感兴趣,可以看这里,作者是yahoo的大牛。