由于js奇葩的scoping rule,扭曲的by-ref closure,javascript里的循环是坑人的,能不用就不用,很容易被坑。
可以看看coffeescript里的循环编译成什么样的javascript,比较复杂,这都是为了保证程序的正确性。
比如这个:
var i = 1000;
for (var i = 0; i < 100; i++) {
console.log(i);
}
alert(i);
一般刚接触javascript的人都会给弄晕
下面这个更晕:
for (var i = 0; i < 100000; i++) {
setTimeout(function(){
console.log(i);
}, 0);
}
会运行半天,然后log 100000个 100000
【 在 cowell (紫禁飞狐) 的大作中提到: 】
: 循环要好几行,看起来也费尽。还不如直接.slice(0)然后放一条注释在后面说明是复制数组来的可读性好。:)
--
修改:nimi FROM 114.244.145.*
FROM 114.244.145.*