基本语法
迭代 Array
let arr = [10, 20, 30];
for (let value of arr) {
value += 1;
console.log(value);
}
// 11
// 21
// 31
迭代字符串
let str = '你好';
for (let value of str) {
console.log(value);
}
// 你
// 好
迭代 TypedArray
let iterable = new Uint8Array([0x00, 0xff]);
for (let value of iterable) {
console.log(value);
}
// 0
// 255
迭代 Set 和 Map
let setArr = new Set([1, 1, 2, 2, 3, 3]);
for (let value of setArr) {
console.log(value);
}
// 1
// 2
// 3
let map = new Map([["a", 1], ["b", 2], ["c", 3]]);
for (let [key, value] of map) {
console.log(key, value);
}
// a 1
// b 2
// c 3
迭代类数组对象
-
迭代 argument 对象
function argfn() { for (let argument of arguments) { console.log(argument); } } argfn(1,2,3) // 1 // 2 // 3
-
迭代 DOM 集合
//注意:这只能在实现了 NodeList.prototype[Symbol.iterator] 的平台上运行 let prags = document.querySelectorAll("p"); for (let value of prags) { value.classList.add("read"); }
知识对比
-
对比 for
- 最原始的语法是 for 循环语句,但是这种写法比较麻烦,每个步骤的信息都需要手动地去处理
-
对比 forEach
- 数组中内置了 forEach 方法,这个方法的致命缺点就是不能跳出循环,break 命令和 return 命令都不能奏效
-
对比 for…in
- for…in 循环不仅遍历数字键名,还会遍历手动添加的其他键,甚至包括原型链上的键;
- 某些情况下,for…in 循环以任意顺序遍历键名,主要是因为对象在内存中的数据类型决定的;
-
for…of 的优点
- 有着同 for…in 一样的简洁语法,但是没有 for…in 那些缺点;
- 不同于 forEach 方法,它可以与 break、continue 和 return 配合使用;
- 提供了遍历所有数据结构的统一操作接口;
ES6+ Symbol
上一篇