for..in..便利的是下标,键;for..of..便利的是值,数组内容
for..in更适合对象而for..of更适合数组
let arr = [1,2,3,'啊哈哈']
arr.name = '张'
arr[4] = '老八'
for (var i in arr){
console.log(i)
}
// 0,1,2,3,4,name
for(var i of arr){
console.log(i)
}
// 1,2,3,啊哈哈,'老八'
以对象方法给数组添加属性for..of内容不会显示,for..in会
以数组形式给数组添加属性或是数组本身就有的属性,两者都会显示
forEach有三个参数;分别是:值,下标,数组
let arr = [1,2,3,'啊哈哈']
arr.name = '张'
arr[4] = '老八'
arr.forEach((a,b,c)=>{
console.log(a)
console.log(b)
console.log(c)
})
// 1 0 [1, 2, 3, '啊哈哈', '老八', name: '张']
// 2 1 [1, 2, 3, '啊哈哈', '老八', name: '张']
// 3 2 [1, 2, 3, '啊哈哈', '老八', name: '张']
// 啊哈哈 3 [1, 2, 3, '啊哈哈', '老八', name: '张']
// 老八 4 [1, 2, 3, '啊哈哈', '老八', name: '张']
根据上面的代码我们可以的出结论如下:
1.以数组的方式添加的方法是会被算入数组长度的,对象方法则不行
2.对象方法添加的属性是可以被最后一个参数显示出来的