1、最简单的for循环
2、for····in····循环返回typeof为object的键名,不能直接获得键值
3、for···of···本质上是调用iterator接口产生的遍历器获得键值;
(1)使用for of 遍历对象,因为自己生成的对象没有iterator接口,所以在直接循环访问对象时会报错。这时可以配合使用entries()、keys()、values()返回一个遍历器对象来访问对象的键值对、键名、键值,(使用方法Object.entries(obj)、Object.keys(obj)、Object.values(obj))比如:
var obj={ name:"li", age:10, friend:{ name:"cao", age:12 }, score:[90,100] } for(var key of Object.entries(obj)){ console.log(key); } ["name", "li"] ["age", 10] ["friend", [object Object] { age: 12, name: "cao" }] ["score", [90, 100]]
(2)遍历数组:
数组内置的有iterator对象,所以可以直接使用for of方法。for(var value of arr){};当想获得数组的下标时:可以使用keys();entries()方法:for(var key of arr.keys()){}
(3)其他
遍历字符串获得单个字符串的字符。
遍历类数组对象:NodeList、arguments对象。
原生具备iterator接口的数据结构如下:
- Array
- Map
- Set
- String
- TypedArray
- 函数的 arguments 对象
- NodeList 对象
会调用数据结构的iterator接口的方法:
解构赋值、扩展运算符、for···of、Array.from()