Discuss / JavaScript / 还有一个疑惑

还有一个疑惑

Topic source

draem0507

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

原因就在于返回的函数引用了变量i,但它并非立刻执行。等到3个函数都返回时,它们所引用的变量i已经变成了4,因此最终结果为16。

字面理解是因为是因为执行了三次造成i逐一递增造成的 但是实际上单纯执行f1方法已经是16了,是不是这个字面表述有问题或则是我哪里理解不对?

draem0507

#2 Created at ... [Delete] [Delete and Lock User]
function count() {
    var arr = [];
    var i=1;

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

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

这样看,就很清楚了


  • 1

Reply