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

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

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

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

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

你这个问题,和我刚回答的另一个问题一样的道理
https://ask.csdn.net/questions/1093316
你直接看我的回答