在平时工作中大家常用的肯定是forEach、map等来循环数组,通过Object.keys().forEach 来循环对象。
缺点: 但是
forEach、map
是无法中断循环的,除非使用try...catch
来抛出异常,强制使forEach跳出循环
这里介绍两个万能的循环方法for-of 、for-in
不同点:
for in
在这里插入代码片 遍历的是数组的索引(即键名),而for of遍历的是数组元素值
for in
总是得到对象的key或数组、字符串的下标
for of
总是得到对象的value或数组、字符串的值
相同点:
都可以使用
break、continue
和return
语句
// for in
var obj = {a:1, b:2, c:3}
for (let key in obj) {
console.log(key)
}
// a b c
//for of
const array1 = ['a', 'b', 'c']
for (const val of array1) {
console.log(val)
}
// a b c
性能比较
- for 性能最好,建议使用let 关键字声明变量,块级作用域使用完会得到释放
- forEach 函数式编程,内部实现每次循环会重新调用函数,
- for of 可以循环所用存在Symbol.iterator 接口的对象、数组
- for in 性能最差,会循环原型链中所有除Symbol 的属性。