【发布时间】:2018-02-15 22:08:01
【问题描述】:
我正在从这个帖子中学习 js 闭包:How do JavaScript closures work?。
我想尝试一下,所以我尝试通过创建一个在函数本身上使用回调的函数来创建一个循环,这样做我会增加一个参数并显示结果。
起初它不起作用,然后我改变了增加参数的方式,它起作用了:
function test1(i1){
console.log("test1 : "+i1.toString());
setTimeout(function(){test1(i1++);},2500);
}
function test2(i2){
console.log("test2 : "+i2.toString());
setTimeout(function(){test2(++i2);},2500);
}
test1(0);
test2(0);
只将i++改为++i。
输出如下:
test1 : 0
test2 : 0
undefined
test1 : 0
test2 : 1
test1 : 0
test2 : 2
test1 : 0
test2 : 3
test1 : 0
test2 : 4
test1 : 0
test2 : 5
为什么第一步不起作用?
编辑 2:我知道 i++ 和 ++i 之间的区别,但它不应该工作吗?。
编辑:肯定与闭包有关...
【问题讨论】:
-
这与闭包无关,更多与执行顺序有关。不错的编辑:)
标签: javascript callback closures