JS的for有四种写法?
入门级教程,请批评指正。
1. 传统for循环
for (init; cond; inc) {
// body
}
与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) {
// body
}
这里的iterable
是指各种能够被迭代的JS对象。最常用的例子是数组Array和字符串String,此外还有arguments、NodeList、Map、Set等等。执行的效果是,for循环会遍历iterable
的每个项目,在每次循环中,代表变量v
即为当前循环的项目。
例如:
const arr = [1, 2, 3, 4, 5]
let sum = 0
for (const v of arr) {
sum += v
}
console.log(sum) // 15
高级:
for await (const v of iterable)
可以用于异步循环遍历。
3. for in 循环
for (const k in object) {
// body
}
for in循环会遍历object
的每个属性,在每次循环中,代表变量k
即为当前属性的属性名称(key)。
例如:
const obj = { a: 1, b: 2, c: 3 }
let sum = 0
for (const k in obj) {
sum += obj[k] // read the value from key
}
console.log(sum) // 6
特别注意for of和for in的区别,前者的代表变量是项目的值(value),后者的代表变量是属性的名称(key)。
4. forEach方法
Array.forEach(Function)
forEach
是JS数组的原生方法。它接受一个函数作为参数,执行效果是对数组的每一个项目,执行传入的函数。传入的函数可以接受三个参数:(element, index, array)
,其中element
表示当前项目的值,index
表示当前项目的下标,array
表示循环的数组本身。
例如:
const arr = [1, 2, 3, 4, 5]
let sum = 0
arr.forEach(element => sum += element)
console.log(sum) // 15
通常在程序中我们更倾向于使用for of循环来代替forEach
方法,因为for关键字使得代码的可读性更高。但是在一些特殊的情况下,我们依然会使用forEach
方法循环遍历数组中的每个项目。
高级:
forEach
可以传入异步函数,等效于使用for await (const v of Array)
。
转载自:https://juejin.cn/post/7080325478589923358