我知道一个用这个代码记录0到9的方法:
编辑:来源
for(var i = 0; i < 10; i++) {
setTimeout(function() {
console.log(i);
}), 10)
}
是将setTimeout
自我调用并将i
作为参数传递,像这样:
for(var i = 0; i < 10; i++) {
setTimeout((function(i) {
console.log(i);
})(i), 10)
}
但是我已经测试过不传递i
的情况下使setTimeout
自我调用,它仍然有效:
for(var i = 0; i < 10; i++) {
setTimeout((function() {
console.log(i);
})(), 10)
}
我的问题:
- 为什么即使不传递i作为参数,它也可以工作?
- 有必要传递i吗?
console.log(i); setTimeout(undefined, 10);
。那又怎样?它不起作用。 - Bergiconsole.log("now")
。你期望在超时日志之前看到它,不是吗? - Bergi