为什么在forScript中`for ... of`在循环之前复制可迭代对象?

时间:2017-05-21 11:51:36

标签: javascript typescript for-of-loop

例如:

remote: false

转化为:

const aKeys = [];
for (let key of aKeys) {
...
}

这里var aKeys = []; for (var _i = 0, aKeys_1 = aKeys; _i < aKeys_1.length; _i++) { var key = aKeys_1[_i]; } 有什么意义?

您还可以在Typescript playground here中查看。

1 个答案:

答案 0 :(得分:3)

因为你可以在循环体中重新分配aKeys,它不应该影响迭代。当然,当你没有 时,它没有必要,但是转录者并不确定。

总的来说,正如@Thomas在评论中所观察到的那样,表达式必须只进行一次评估 - 虽然看到它对{{1}的引用不会产生影响是微不足道的变量,一般来说并不容易。