一个闭包的问题

function count() {

    var arr = [];

    for (var i=1; i<=3; i++) {

        arr.push((function (n) {

            return function () {

                return n * n;

            }

        })(i));

    }

    return arr;

}


var results = count();

var f1 = results[0];

var f2 = results[1];

var f3 = results[2];


f1(); // 1

f2(); // 4

f3(); // 9

请问count函数的返回值是 n*n吗?

results拿到的是count里的哪段代码?

这段代码看的头好大啊,自动执行函数不是(function(){})吗?为什么还有一个(i)??


arr.push((function (n) {return function (){return n * n;}})(i));

(function(){})())这个也是自动执行函数的样式吗?


莫回无
浏览 350回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript