for 循环
结构:
for (初始化表达式1; 判断表达式2; 自增表达式3) {
// 循环体4
}
实例:
for (let i = 0; i < 5; i++) {
// 循环体逻辑
console.log(i)
}
for in索引遍历,主要用于循环/迭代对象属性,可以用来循环/迭代数组
对象迭代出来的是对象的属性key值,可以通过obj[key]的方式取值,也可以通过obj.key取出属性值
如果属性名或方法名,是一个变量,则使用obj[key]的语法
数组迭代出来的是数组元素
实例:
let arr = [1,2,3,4], obj = {a: 'a', b: 'b'};
for (val in arr) {
console.log(val) // val为数组元素
}
for (key in obj) {
console.log(obj[key]) // obj[key],obj.key 取的都是key键所对应的值
console.log(obj.key)
}
判断对象是否为数组/对象的元素/属性.
实例:
let arr = [1,2,3,4], obj = {a: 'a', b: 'b'};
let result = for (1 in arr) // => result = true
let result = for ('c' in obj) // => result = false
for of 值遍历,用于数组的遍历,不能遍历对象属性
实例:
let arr = [1,2,3,4]
for (let val of arr) {
console.log(val) // val为数组元素
}
for of也可以用来遍历字符串
实例:
let arr = 'zhangsan'
for (let val of arr) {
console.log(val) // val为字符串的字符
}
forEach 数组的遍历
用于调用数组的每个元素,并将元素传递给回调函数。
forEach() 对于空数组是不会执行回调函数的
forEach无法在所有结果返回给函数之前结束循环.
forEach无法正常的跳出循环,可以通过抛异常与异常捕获结合的方式跳出循环
return,break,continue对forEach是无效的
实例:
let arr = [1,2,3,4]
arr.forEach((val, index, arr) => { // val为数值,index为索引,arr为数组
console.log(val)
})