javascript中settimeout的问题
为什么输出的是10个undefined?从settimeout中拿出来,直接console.log(myarray[i])却能正确输出?...
为什么输出的是 10个undefined?
从settimeout中拿出来,直接console.log(myarray[i])却能正确输出? 展开
从settimeout中拿出来,直接console.log(myarray[i])却能正确输出? 展开
展开全部
setTimeout(console.log(myarr[i]),100*i)
这样写就对了!
至于你的写法:setTimeout(function (){console.log(myarr[i])},100*i)!
你先这样写:
<script type="text/javascript">
for(var i=0;i<3;i++) {
setTimeout(function () {
console.log(i),100*i
})
}
</script>
你会发现它会输出3个3,不是输出0,1,2!回到你的例子中,i 一直等于10,myarray[10]的值就是undefined啊。所以会输出10个undefined。
for语句不会因为有setTimeout的存在而停止,他会跳过setTimeout,setTimeout设定的是100毫秒的延迟,而for语句执行根本用不了那么长时间!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询