美文网首页让前端飞
你真的懂setTimeout吗(一)

你真的懂setTimeout吗(一)

作者: 河的左岸 | 来源:发表于2017-06-03 00:00 被阅读0次

问题:请从1到10打印到控制台,每隔一秒打印一个数字。不要用全局变量和递归。

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

上面的代码,真正得到的并不是预期的效果,而是打印了10次11,而且是在几乎同时打印出来的(取决了执行一次for语句需要多长时间)。
原因:并不会等待执行完setTimeout,再进行下一次循环。

for(var i = 1;i < 11;++i) {
    setTimeout(function(){
      console.log(i);
   },1000 * i); 
}

效果:每秒钟打印一次11.
原因:调用setTimeout(fun, millisecond)时,取i是1到10;但是在执行setTimeout时,console.log(i);中的i已经是11 了

function st(n){
    setTimeout(function(){
        console.log(n);
    },1000 * n); 
}

for(var i = 1;i < 11;++i) {
    st(i);
}

效果:成功。每秒钟打印一次,从1到10
原因:这里用到了形参传值。

相关文章

  • 你真的懂setTimeout吗(一)

    问题:请从1到10打印到控制台,每隔一秒打印一个数字。不要用全局变量和递归。 上面的代码,真正得到的并不是预期的效...

  • 你真的懂setTimeout吗(二)

    语法 setTimeout(code,millisec,lang) setTimeout() 方法用于在指定的毫秒...

  • 懂?

    我们真的懂父母吗?不懂;我们真的懂孩子吗?不懂;我们真的懂自己吗?不懂;那我们懂谁呢? 我们总是感觉自...

  • 你真的懂老婆吗?你真的懂老公吗?

    老婆:“老公,我今天好难受……” 老公:“你又怎么了?” 老婆:“我今天又被老板骂了。和上次的原因一样。” 老公:...

  • 你真的懂老婆吗?你真的懂老公吗?

    老婆:“老公,我今天好难受……” 老公:“你又怎么了?” 老婆:“我今天又被老板骂了。和上次的原因一样。” 老公:...

  • 你真的懂this吗?

    首先,我们为什么要学js? 1, this使用频率很高,如果我们不懂this,那么在看别人的代码或者是源码的时候,...

  • 你真的懂this吗?

    this关键字是JavaScript中最复杂的机制之一,是一个特别的关键字,被自动定义在所有函数的作用域中,但是相...

  • 你真的“懂”吗?

    当爱情的火熄灭,当激情消失,当心跳恢复平静,摆在两个人面前的是如何相处,如何维持爱的温度。特别推荐赵永久,资深婚姻...

  • 异步编程(二)

    setTimeout setTimeout设置的时间一定准确吗?为什么 不一定。 setTimeout是异步函数,...

  • 改变不了坏习惯,只因你并不懂它

    习惯人人有,但你真的懂它吗。相信吗,你能改变任何坏习惯,只要你真的懂它。 我都不问你,你想改掉什么习惯。 因为,不...

网友评论

    本文标题:你真的懂setTimeout吗(一)

    本文链接:https://www.haomeiwen.com/subject/ndlpfxtx.html