1.代码一:
结果:在浏览器中一秒显示一个
是一秒出来一行
2.代码二
结果:在浏览器中是一次性出来的
问题:为什么会不一样,我认为是都会一个一个显示,而不是一次性都显示??
1.代码一:
结果:在浏览器中一秒显示一个
是一秒出来一行
2.代码二
结果:在浏览器中是一次性出来的
问题:为什么会不一样,我认为是都会一个一个显示,而不是一次性都显示??
第二个应该是第五秒显示完吧
是定时器的 1000*i 的问题 也是闭包的问题
第一个 1000*i i是递增的 这个i在闭包里面
第二个 1000*i i是5 固定的 这个i在闭包外面
8 回答4.6k 阅读✓ 已解决
6 回答3.4k 阅读✓ 已解决
5 回答2.8k 阅读✓ 已解决
5 回答6.3k 阅读✓ 已解决
4 回答2.2k 阅读✓ 已解决
4 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
代码1里面利用了闭包 把for每次执行的i当成参数传递闭包函数中,因此获得的i值分别是0 1 2 3 4因此输入也便是一个一个的显示
但是代码2中异步执行的定时器中的duration中的i值都是指向for循环中i值得变量储存地址,在for循环结束后i变成了5 所以duration的i值都是5,而定时器中的function中的j值是通过参数获取到的 参数其实是另外一种方式的变量拷贝 并不是直接引用i的地址 所以每次都有能把i的不同值传递进入