1.传统for循环
for (init; cond; inc) {}
与C++或Java类似,for关键字后用小括号描述循环设置,在小括号中用两个分号;将循环设置隔断为三个部分,分别为:
- init初始化语句(指令),在整个循环开始前执行
- cond条件(逻辑表达式),表示循环继续的条件
- inc自增语句(指令),在每次循环体结束以后执行
整个循环的执行步骤为:
- 执行init语句
- 计算cond表达式,若为假则退出循环
- 执行循环体body
- 执行inc语句,随后返回步骤2
举个栗子:
let sum = 0
for (let i = 1; i <= 10; i++) {
sum += i
}
console.log(sum) // 55
2.for of 循环
for (const v of iterable) {}
这里的iterable是指各种能够被迭代的JS对象。最常用的例子是数组Array和字符串String,此外还有arguments、NodeList、Map、Set等等。执行的效果是,for循环会遍历iterable的每个项目,在每次循环中,代表变量v即为当前循环的项目。
举个栗子:
const arr = [1, 2, 3, 4, 5,6]
let sum = 0
for (const v of arr) {
sum += v
}
console.log(sum) // 21
3.for in 循环
for (const k in object) {}
for in循环会遍历object的每个属性,在每次循环中,代表变量k即为当前属性的属性名称(key)。
需要注意的是for of和for in的区别,前者的代表变量是项目的值(value),后者的代表变量是属性的名称(key)。
举个栗子:
const obj = { a: 1, b: 2, c: 3 }
let sum = 0
for (const k in obj) {
sum += obj[k]
}
console.log(sum) // 6
4.forEach 循环
Array.forEach(Function)
forEach是JS数组的原生方法。它接受一个函数作为参数,执行效果是对数组的每一个项目,执行传入的函数。传入的函数可以接受三个参数:(element, index, array),其中element表示当前项目的值,index表示当前项目的下标,array表示循环的数组本身。
通常在程序中我们更倾向于使用for of循环来代替forEach方法,因为for关键字使得代码的可读性更高。但是在一些特殊的情况下,我们依然会使用forEach方法循环遍历数组中的每个项目。
const arr = [1, 2, 3, 4, 5]
let sum = 0
arr.forEach((item,index) => sum += item)
console.log(sum) // 15