Discuss
/
JavaScript
/
还有一个疑惑
还有一个疑惑
Topic sourcefunction 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
draem0507
原因就在于返回的函数引用了变量i,但它并非立刻执行。等到3个函数都返回时,它们所引用的变量i已经变成了4,因此最终结果为16。
字面理解是因为是因为执行了三次造成i逐一递增造成的 但是实际上单纯执行f1方法已经是16了,是不是这个字面表述有问题或则是我哪里理解不对?