在数组上迭代的上下文中,
在数组上迭代的上下文中,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
还可以用于迭代可迭代对象(数组和类数组对象以及用户定义的可迭代对象(。除非使用break
、return
或throw
关键字终止,否则将对每个不同属性的值执行操作。
forEach
方法可用作可迭代对象的原型方法,但除非抛出错误,否则它会为每个元素执行。(理想情况下,只有在每个元件上执行操作时才应使用(
在性能方面,
for
语句的性能优于所有其他迭代语句。参考本
在支持方面,
for
语句在浏览器中得到广泛支持。链接- Internet Explorer中仍然不支持
for...of
。链接 - CCD_ 12也被广泛支持用于阵列。链接