【发布时间】:2016-05-13 03:31:52
【问题描述】:
我理解这样一个概念:当我们使用循环迭代变量var i=0; i<length; i++ 时,我们总是希望避免循环的命令式方式,因为它是非常冗长和命令式的做事方式,即使我们不这样做,它也会为我们提供项目索引'不需要它们。数组上的.forEach() 方法似乎通过在声明性方法中公开val(和index 仅在需要时)来解决这个问题:
var arr = [1, 2, 3, 4];
arr.forEach(function (val) {
// Use val
});
我正在浏览 ES6 结构并看到了新的 for-of 循环结构。试用后我的问题是:
既然我们已经在语言中定义了 2,为什么还需要一个新的构造?它实现了哪些功能是上述 2 个循环构造无法实现的?
【问题讨论】:
-
为了一致地迭代可迭代对象,一方面。
-
for..of与(可能)无限序列生成器一起使用。.forEach()无法做到这一点。 -
for循环并不冗长。我也会对您将forEach描述为“声明性”提出异议;它是(适度的)“功能性的”,但仍然完全是程序性/必要性的。一个小问题,但for...of中的变量可以解构,所以你可以写for ([a, b] of pairs)。 -
forEach 是违反直觉的——如果没有其他原因的话——那就是。
标签: javascript for-loop foreach ecmascript-6