forEach
对数组的每一个元素执行一次提供的函数(不能使用return、break等中断循环),不改变原数组,无返回值undefined。只能遍历索引数组,无法遍历字符串或类数组对象等;for循环几乎是万能的
var arr=[1,2,4,5,,1]
arr.forEach((a,index,arr)=>{
console.log(a,index,arr)
})
输出结果
1 0 (6) [1, 2, 4, 5, empty, 1]
2 1 (6) [1, 2, 4, 5, empty, 1]
4 2 (6) [1, 2, 4, 5, empty, 1]
5 3 (6) [1, 2, 4, 5, empty, 1]
1 5 (6) [1, 2, 4, 5, empty, 1]
绑定单击事件
<body>
<button class="btns">1</button>
<button class="btns">2</button>
<button class="btns">3</button>
<button class="btns">4</button>
<script>
var btns = document.querySelectorAll('.btns')
console.log(btns)
btns.forEach((item)=>{
item.onclick=(()=>{
console.log(item.innerHTML)
})
})
</script>
</body>
for…in
循环遍历的值都是数据结构的键值
var obj = { "a":1,"b":2 }
for(let k in obj){
console.log(k) //a,b 对象属性
}
var arr1 = [ 1,2,3 ]
for (let k in arr1){
console.log(k) //0,1,2 数组下标
}
for of
它是ES6中新增加的语法,用来循环获取一对键值对中的值,不可直接循环对象
var arr1 = [ 1,2,3 ]
for (let k of arr1){
console.log(k) //1,2,3
}
var obj = { "a":1,"b":2 }
//需先将对象转为数组
var keys = Object.Keys(obj) //[ "a","b" ]
var vals = Object.values(obj) //[1,2]
for(let k of keys){
console.log(k) //a,b
}