JS闭包问题

关于下列代码输出


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

的解释

首先,var定义了一个全局变量,执行步骤
1.for循环初始化,此时需要注意的是从第一个到第五个setTimeout的时间间隔已经被指定为1s,2s,3s,4s,5s,而不是同时为6s,如果同时是6s,则应该是同时输出5个6,而不是隔一秒输出一个。
2.同时执行五个计时器,第一秒,第一个计时器输出i=6,第二秒输出i=6,……,第五秒输出i=6

然后就是找资料的时候碰见了一道题目,感觉还是考逻辑的一道题目
function fun(n,o) {
  console.log(o)
  return {
    fun:function(m){
      return fun(m,n);
    }
  };
}
var a = fun(0);  a.fun(1);  a.fun(2);  a.fun(3);//undefined,?,?,?
var b = fun(0).fun(1).fun(2).fun(3);//undefined,?,?,?
var c = fun(0).fun(1);  c.fun(2);  c.fun(3);//undefined,?,?,?
//问:三行a,b,c的输出分别是什么

答案在这里:---->
//a: undefined,0,0,0
//b: undefined,0,1,2
//c: undefined,0,1,1

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 之前我写过一篇JavaScript原型与原型链的文章,此属于JS中的重难点。 而闭包,是JS中除了原型链之外又一个...
    前端王睿阅读 5,599评论 2 12
  • 在之前的JS闭包问题(一)文章中大概介绍了一下JS闭包,同时讲了闭包与变量之间的问题,今天我们继续聊闭包,聊聊闭包...
    前端王睿阅读 3,440评论 2 13
  • 1.question:最后三行代码分别返回什么结果?
    端端来也阅读 4,278评论 0 0
  • "use strict";function _classCallCheck(e,t){if(!(e instanc...
    久些阅读 6,169评论 0 2
  • 一声叹息被揉得粉粉碎 彩虹桥上遗失了的诺言 发酵在座座凋零的坟冢 猫的羞涩舞步多么凌乱 推窗随意找个小虫对话 竟然...
    阳光小城阅读 1,384评论 0 6