在迭代数组的上下文中,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);
}顺便说一下,这是我的函数:
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);
}
}发布于 2020-08-15 21:27:30
基本差异
for语句允许您在控制开始和终止条件的同时遍历可迭代对象。
for...of还可用于迭代可迭代对象(数组和类似数组的对象以及用户定义的可迭代对象)。除非使用break、return或throw关键字终止该操作,否则将对每个不同属性的值执行该操作。
forEach方法可用作可迭代对象的原型方法,但除非抛出错误,否则将为每个元素执行该方法。(理想情况下,仅当要在每个元素上执行操作时才使用)
性能方面的,
for语句的性能优于所有其他迭代语句。Refer to this
支持方面的,
跨浏览器广泛支持
https://stackoverflow.com/questions/63424727
复制相似问题