js循环
一、传统控制类循环
| 名称 | 特点 | 是否可中断 |
|---|---|---|
| for | 最基本语法,带索引 | 可中断 |
| while | 只判断条件,适合不确定循环次数 | 可中断 |
| do...while | 至少执行一次 | 可中断 |
| for...in | 遍历对象的可枚举属(包括原型) | 可中断 |
| for...of | 遍历可迭代对象的值 | 可中断 |
二、数组方法类循环
| 名称 | 特点 | 是否可中断 |
|---|---|---|
| forEach | 遍历所有元素 | 不可中断 |
| map | 遍历后生成新数组 | 不可中断 |
| filter | 筛选符合条件的元素 | 不可中断 |
| reduce | 累加器,把数组“收敛”为一个值 | 不可中断 |
| some | 遇到第一个符合条件的元素就返回true并停止循环 | 可中断 |
| every | 所有元素都符合条件才返回true | 可中断 |
| find | 返回第一个符合条件的元素 | 可中断 |
| findIndex | 返回一个符合条件的索引 | 可中断 |
| flatMao | map + flat(1),生成扁平的新数组 | 不可中断 |
三、循环中断的方式
| 方式 | 说明 |
|---|---|
| break | 跳出整个循环 |
| continue | 仅跳过当前循环 |
| return | 退出整个函数,间接结束循环 |
四、for...of支持异步
async function test() {
const arr = [1, 2, 3, 4];
for (const val of arr) {
if (val === 3) break;
console.log(val);
await new Promise(res => setTimeout(res, 500));
}
}
五、内部循环暂停外部循环的方式
outer: for (let i = 0; i < 3; i++) {
for (let j = 0; j < 3; j++) {
if (j === 1) break outer; // 直接跳出外层循环
console.log(i, j);
}
}

浙公网安备 33010602011771号