for循环和for.of循环有什么区别



在数组上迭代的上下文中,for循环和for..of循环之间的主要区别是什么

为什么这个代码是

for (let n of at.neighbours) {
DFS(n);
}

给出与此代码不同的输出?

for (let i = 0; i < at.neighbours.length; i++) {
n = at.neighbours[i]
DFS(n);
}

这是我的功能btw:

function DFS(at) {
if (at.visited) return;
at.visited = true

// for (let i = 0; i < at.neighbours.length; i++) {
//   n = at.neighbours[i]
//   DFS(n);
// }

// This gives desired output
for (let n of at.neighbours) {
DFS(n);
}
}

基本差异

for语句允许您在控制开始和终止条件的同时对可迭代对象进行迭代。

for...of还可以用于迭代可迭代对象(数组和类数组对象以及用户定义的可迭代对象(。除非使用breakreturnthrow关键字终止,否则将对每个不同属性的值执行操作。

forEach方法可用作可迭代对象的原型方法,但除非抛出错误,否则它会为每个元素执行。(理想情况下,只有在每个元件上执行操作时才应使用(

在性能方面,

for语句的性能优于所有其他迭代语句。参考本

在支持方面,

  • for语句在浏览器中得到广泛支持。链接
  • Internet Explorer中仍然不支持for...of。链接
  • CCD_ 12也被广泛支持用于阵列。链接

最新更新