for,foreach,forin,forof用法和区别
约 358 字大约 1 分钟
2025-07-30
demo.js
var arrayList = [
{ id: 1, name: "zs", scope: 56 },
{ id: 2, name: "ls", scope: 86 },
{ id: 3, name: "wu", scope: 22 },
{ id: 4, name: "cl", scope: 42 },
{ id: 5, name: "qb", scope: 64 },
];
/*
普通for循环
for循环中可以使用return、break等来中断循环
*/
function forLoop() {
for (let index = 0; index < arrayList.length; index++) {
const element = arrayList[index];
console.log("for-index:", index);
console.log("for-element:", element);
}
}
/*
for-each
arr.forEach(callback(currentValue [, index [, array]])[, thisArg])
不能使用return、break等中断循环,不改变原数组
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach
*/
function forEachLoop() {
arrayList.forEach((element, index) => {
console.log("for-each-index:", index);
console.log("for-each-element:", element);
});
}
/*
for-in
for ... in是为遍历对象属性而构建的,循环遍历的值都是数据结构的键值(key,value),不建议与数组一起使用
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Statements/for...in
*/
function forInLoop() {
var obj = { id: 5, name: "qb", scope: 64 };
for (const key in obj) {
console.log("for-in-key:", key); // obj = {key:value}
// 读取value
if (Object.hasOwnProperty.call(obj, key)) {
const value = obj[key];
// console.log('for-in-value:', value);
}
}
}
/*
for-of
它是ES6中新增加的语法,用来循环获取一对键值对中的值,循环一个普通对象会报错
for...of语句在可迭代对象(包括 Array,Map,Set,String,TypedArray,arguments 对象等等)上创建一个迭代循环,调用自定义迭代钩子,并为每个不同属性的值执行语句
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Statements/for...of
*/
function forOfLoop() {
var obj = { id: 5, name: "qb", scope: 64 };
for (const iterator of arrayList) {
console.log("for-of-iterator:", iterator);
}
}
forLoop();
console.log("---------------------------------------");
forEachLoop();
console.log("---------------------------------------");
forInLoop();
console.log("---------------------------------------");
forOfLoop();
console.log("---------------------------------------");