chen_haooooo 2020-08-07 20:05 采纳率: 0%
浏览 116

有没有大佬有空来教教小白,解释一下这几行JS代码是啥意思,为啥输出的是三个3

    var data = [];
    for (var i = 0; i < 3; i++) {
        data[i] = function () {
            console.log(i);
        };
    }
    data[0]();
    data[1]();
    data[2]();
  • 写回答

2条回答 默认 最新

  • jingluan666 2020-08-07 21:03
    关注

    循环创建一个方法组,然后依次调用,但要注意控制台输出的值都一样,这牵涉到闭包问题,正确的写法应该是:

    for (var i = 0; i < 3; i++) {
            data[i] = (function (num) {
                 return function() {
                       console.info(num);   
                 }
            })(i);
        }
    

    参考:https://www.jianshu.com/p/26c81fde22fb

    评论

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog