一段代码,两种解释

2018-04-24  本文已影响6人  9298f0bd9110
一段代码

这段代码输出嘞 就是999999999(九个九)

解释一 : setTimeout是异步函数 每执行一个i 都会产生一个setTimeout函数 ,当 i 循环到9了,才开始执行setTimeout,,也就产生了 九个九

解释二 : var i ,,i 为全局变量,也就是说 i 唯一,每变化一次 i ,,,,i 值都变换一次,所以最后执行的出来的结果 i 都为9

总结解释: 因为i是全局变量 ,JavaScript是单线程的语言,当for循环结束后才会执行 环境区域里的函数,所以最后输出的都是9

a[0]()........a[8]()  输出的结果也都为9

怎样能输出0~9呢

方法一: for 循环的内部使用闭包

方法二: var 全局变量换为let 局部变量

..............................................

分享结束  下次见哈`~~~~.

如有错误或者其他见解可评论~~~~~

上一篇 下一篇

猜你喜欢

热点阅读