美文网首页
一段代码,两种解释

一段代码,两种解释

作者: 9298f0bd9110 | 来源:发表于2018-04-24 15:55 被阅读6次
一段代码

这段代码输出嘞 就是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 局部变量

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

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

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

相关文章