for-in/of
-
在in的时候,是打印所有的key,但是在of的时候,是打印所有(key为数字的情况)的value
-
并且arr[1] 和arr[‘1’] 一样的,在下标(或者 key) 中,不区分Number和String,数组就是对象
-
for-in循环:只能获得对象的键名key,不能获得键值,且会遍历对象的整个原型链,主要用于遍历对象,格式:for(keys in zhangsan){}
-
for-of循环:允许遍历获得键值value,只遍历当前对象不会遍历原型链,作为遍历所有数据结构的统一的方法。
object.keys和for-in区别
- 两者之间最主要的区别就是Object.keys( )不会走原型链,而for-in 会走原型链
- object.keys返回的是数组(key值)
let arr = ['a', 'b', 'c']
arr["3"] = 'd'
arr["key"] = 'e'
arr[5] = 'f'
for (let key in arr) {
console.log(key);
}
//0 1 2 3 5 key
console.log("======");
for (let value of arr) {
console.log(value)
}
//a b c d underfined f
console.log("======");
let keys = Object.keys(arr);
console.log(keys);
//[ '0', '1', '2', '3', '5', 'key' ]