猿问

关于js闭包该如何理解“闭包只能取得包含函数中任何变量的最后一个值这句话”

是不是说如果闭包返回一个数组只能取到数组的最后一个值?

高程书上看到这句话不太理解 应该如何理解呢?


function createFunctions () {

    var result = new Array();

    

    for (var i = 0; i < 10; i++) {

        result[i] = function () {

            return i;

        }

    }

    

    return result;

}


var funcArray = createFunctions();

for (let func of funcArray) {

    console.log(func())

}

这样写是不是result[i]中存放的是10个i而非数值

为什么将例子改成

result[i] = function (num) {


   return function() {

        return num;

   };

}(i);

就可以得到正确结果 是不是此时的result数组存放的是一个立即执行的函数返回的值?

是这样理解的吗?


鸿蒙传说
浏览 722回答 1
1回答
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答