==记住,for in遍历的是数组的索引(即键名),而for of遍历的是数组元素值。==
for in
for in是ES5的标准,是遍历对象的属性,一般在遍历对象的属性时用for in
for in 循环的是key
var x = ['a',123,{a:'1',b:'2'}]
for (var i in x) {
console.log(x[i])
}
// a
// 123
// Object {a: "1", b: "2"}
for in 可以遍历普通的对象:
var y = {a: 'aaa', b: 'bbb'}
for (var i in y) {
console.log(y[i])
}
//aaa
//bbb
for (var i in y) {
console.log(i)
}
//a
//b
for of
for of是ES6引入的标准,遍历对象元素,一般情况遍历数组用for of
for of 循环的是value
var x = ['a',123,{a:'1',b:'2'}]
for (var i of x) {
console.log(i)
}
// a
// 123
// Object {a: "1", b: "2"}
for of循环不会循环对象的key,只会循环出数组的value,因此for…of不能循环遍历普通象:
var y = {a: 'aaa', b: 'bbb'}
for (var i of y) {
console.log(i)
}
// Uncaught TypeError: undefined is not a function