Discuss / JavaScript / 其实不要嵌套函数??

其实不要嵌套函数??

Topic source
function count() {
    var arr = [];
    for (var i=1; i<=3; i++) {
        arr.push((function () {
            return i * i;
        })());
    }
    return arr;
}

var results = count();
var f1 = results[0];
var f2 = results[1];
var f3 = results[2];
f1(); // 1
f2(); // 4
f3(); // 9

老师您好,这里不用嵌套函数,让闭包函数立刻执行,发现结果也是149,嵌套的函数后反而有点费解。不知道理解的正不正确,还望老师指教,谢谢。

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

按我的理解你这里写的其实跟廖老师下面的用法是一样的,你这里立即执行的函数用到了i,而此时是立即执行的,自己函数内部没有定义i,就会去上一层函数去找,因此执行时使用的i是固定不会变的。

April1402

#3 Created at ... [Delete] [Delete and Lock User]

你确定你f1加了()不会报错么

最后应该是 f1; f2; f3;


  • 1

Reply