js小白学习,求教,各位大佬求指导

方正义 2018-06-11 05:04:10
function count() {
var arr = [];
for (var i=1; i<=3; i++) {
arr.push((function (n) {
return function () {
return n * n;
}
})(i));
}
return arr;
}

在看闭包,看不哟

(i) 这句是啥子意思哟

大佬能解释下这语句吗
...全文
482 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_18713969 2018-06-11
  • 打赏
  • 举报
回复
匿名函数自调用,i是匿名函数的参数。
丰云 2018-06-11
  • 打赏
  • 举报
回复
执行一个匿名函数,给他传参数i
天际的海浪 2018-06-11
  • 打赏
  • 举报
回复
(function (n) {......})(i) 是创建一个匿名函数并立即执行 i是执行时传递的实参,n是函数内接收参数的形参。 等同于下面的形式 for (var i=1; i<=3; i++) { var f = function (n) { return function () { return n * n; } }; var h = f(i); arr.push(h); }
ambit_tsai-微信 2018-06-11
  • 打赏
  • 举报
回复
你的代码可以拆开,这么看

function count() {
    var arr = [];
    for (var i=1; i<=3; i++) {
        arr.push( square(i) );  // 将square的执行结果存入arr
    }
    return arr;
}

function square(n){
    return function () {  // 返回一个匿名函数,其中n的值为每次传入的i的值
        return n * n;
    }
}
这个代码是考你对闭包的理解

87,922

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧