window对象setTimeout()方法

setTimeout() 是属于 window 的方法,该方法用于在指定的毫秒数后调用函数或计算表达式。语法格式可以是以下两种:setTimeout(要执行的代码, 等待的毫秒数),setTimeout(JavaScript 函数, 等待的毫秒数);
一个简单例子:

 <input type="text" id="displayBox" name="displayBox" value="0">
   <script>
   x = 0
function countSecond() 
{ 
    if(x<20) {
        x = x+1
        document.getElementById("displayBox").value=x 
        setTimeout("countSecond()", 1000)
    }
}
// 执行函数
countSecond()
   </script>
   //input中的value值每隔一秒就会+1,直到等于20停止。

另一个例子面试中常会出现:

for(var i=1;i<=3;i++){
setTimeout(function(){
console.log(i);
},10);
};

答案:4 4 4。是不是有些人会有疑问为什么不是1,2,3,因为setTimeout是一次执行函数,这里是10ms后执行,仅仅执行一次;for(var i=1;i<=3;i++),i的每次取值都是执行setTimeout这个函数,并没有执行setTimeout里面的function(即闭包函数),setTimeout里面的function是有setTimeout的定时触动的,也就是10ms后执行,也就是说i从1~3时,一共执行了3次的setTimeout()函数,此时的i的值是3,由于for语句的执行速度远小于1秒,所以,1秒后,由setTimeout()函数定时触动的闭包函数function()开始执行,console.log(i);i的值已经是4了,所以相继打印3次i。总结一句话:Javascript 事件处理器在线程空闲之前不会运行.
如何让上述代码输出 1 2 3?

for(var i=1;i<=3;i++){
setTimeout((function(a){ //改成立即执行函数
console.log(a);
})(i),0);
};

1,2,3/输出

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值