一道JS题目?
}
红色娘子精 2小时前 开发者_开发百科
一开始, 程序从for开始执行, 遇到setTimeout的时候先不管, 继续往后执行, 一直执行到循环结束.好了, setTimeout可以执行啦. 连续六个setTimeout打印出i, 而此时的i已经是6啦.
qkoufu4813 2小时前 开发者_开发百科
判断当前i的值是否小于等于5,是的话就加1,因为你用了setTimeout,所以一秒后i的值已经变成6了,再输出的话,就一直是6了
linawang08 2小时前 开发者_StackOverflow
输出的结果是:2.就是说{}
中定义的变量i
会取代{}
外面的变量i
,即没有块级作用域.
maksimsong 2小时前 开发者_开发知识库
通过上面的代码,可以看出只定义了一个变量 i
,只有在循环里面赋值为1~5
,循环结束后是 6。而setTimeout
中的代码是在循环之后执行的,所以输出的i
是 6。而不是你所想的。因为 i 只有一个,不可能同时等于 1,2,3,4,5
.
梦想趁早 2小时前 开发者_开发技巧
可以改成(建议先理解上面一段代码,先不要纠结ES6的):
精彩评论