foreach、for in和for of都是用于循环遍历数组或对象的方法,但它们之间有一些区别。
1. foreach:是数组的原生方法,可以遍历数组中的每个元素,但是无法中途中断循环或者跳出循环。它只接受一个回调函数作为参数,参数为当前元素、索引和数组本身。
例子:
const arr = [1, 2, 3]; arr.forEach((element, index, array) => { console.log(element, index, array); });
2. for in:是一个用于遍历对象属性的循环语句,可以遍历对象的可枚举属性(包括继承的属性)。它遍历的是对象的键名,而不是键值。可以用来遍历数组,但是不推荐使用,因为数组也是对象,它会遍历数组的索引。
例子:
const obj = { a: 1, b: 2, c: 3 }; for (let key in obj) { console.log(key, obj[key]); }
3. for of:是ES6新增的循环语句,用于遍历可迭代对象(包括数组、字符串、Set、Map等)。它遍历的是对象的键值,而不是键名。与for in不同,for of无法遍历对象的属性,只能遍历对象的值。
例子:
const arr = [1, 2, 3]; for (let element of arr) { console.log(element); }