一句话概括:for in是遍历(object)键名,for of是遍历(array)键值——for of 循环用来获取一对键值对中的值,而 for in 获取的是 键名。 for in 循环出的是key(并且key的类型是string),for of 循环出的是value。 for of 是es6引新引入的特性,修复了es5引入的for in 的不足。 for of 不能循环普通的对象...
for in遍历的是数组的索引(即键名),而for of遍历的是数组元素值。 for..of适用遍历数/数组对象/字符串/map/set等拥有迭代器对象的集合.但是不能遍历对象,因为没有迭代器对象.与forEach()不同的是,它可以正确响应break、continue和return语句 for-of循环不支持普通对象,但如果你想迭代一个对象的属性,你可以用f...
for > for-of > forEach > map > for-in for 循环当然是最简单的,因为它没有任何额外的函数调用栈和上下文; for...of只要具有Iterator接口的数据结构,都可以使用它迭代成员。它直接读取的是键值。 forEach,因为它其实比我们想象得要复杂一些,它实际上是array.forEach(function(currentValue, index, arr), t...
js常用的遍历数组的方式有三种:for,forEach,of,由于实现方式的不同,导致三种遍历方式性能有所差异 forEach的性能损耗,主要在于要生成函数。而of的问题,是在于内部使用了迭代器。所以这两种方式比起for来说都要差一些。 结论: for > forEach > of 在千万级的规模,差距达到几十毫秒, 亿级规模,差距达到几百毫秒...
函数式编程的forEach性能消耗要更大一些。 思考:在 forEach 中使用 return 能中断循环吗? [1,2,4,5].forEach((item, index) => { console.log(item, index) return }) // 1 0 // 2 1 // 4 2 // 5 3 从上面看出 forEach 中使用 return 是不能跳出循环的。
使用let声明下的循环,由于for中块级作用域的影响,内存得到释放,运行的运行的速度会更快一些。 使用var声明时因为for while的循环都不存在块级作用域的影响,两者运行的速度基本一致。 forEach(callback, thisArg) 循环数组 callback函数每一轮循环都会执行一次,且还可以接收三个参数(currentValue, index, array),ind...
使用let声明下的循环,由于for中块级作用域的影响,内存得到释放,运行的运行的速度会更快一些。 使用var声明时因为for while的循环都不存在块级作用域的影响,两者运行的速度基本一致。 forEach(callback, thisArg) 循环数组 callback函数每一轮循环都会执行一次,且还可以接收三个参数(currentValue, index, array),ind...
本文剖析 JS 中的三种循环:forEach、for in、for of 的原理与性能。首先,forEach 函数每次循环都会执行一次回调函数,接收三个参数,可选参数包括当前值、索引、数组自身,回调函数的 this 指向为可选参数。此循环主要用于遍历数组中的可枚举属性。值得注意的是,使用 return 在 forEach 中并不能中断...
forEach arr.forEach(function (i) {}); 1. map arr.map(function (i) {}); 1. 然后ES6有了更为方便的for…of for (let i of arr) {} 1. 此篇不考虑作用差异,仅对这些方式的性能做一次比较。 注:filter、every、some跟forEach/map相近,不常用所以本次不加入比较。