88 lines
1.8 KiB
Markdown
88 lines
1.8 KiB
Markdown
![]() |
---
|
|||
|
title: For...Of Loop
|
|||
|
localeTitle: 对于...... Of Loop
|
|||
|
---
|
|||
|
`for...of`语句创建循环遍历可迭代对象(包括Array,Map,Set,Arguments对象等),调用自定义迭代挂钩,其中包含要为每个不同属性的值执行的语句。
|
|||
|
|
|||
|
```javascript
|
|||
|
for (variable of object) {
|
|||
|
statement
|
|||
|
}
|
|||
|
```
|
|||
|
|
|||
|
| |说明| | ---------- | ------------------------------------- | |变量|在每次迭代时,将不同属性的值分配给变量。 | |对象|迭代其可枚举属性的对象。 |
|
|||
|
|
|||
|
## 例子
|
|||
|
|
|||
|
### 排列
|
|||
|
|
|||
|
```javascript
|
|||
|
let arr = [ "fred", "tom", "bob" ];
|
|||
|
|
|||
|
for (let i of arr) {
|
|||
|
console.log(i);
|
|||
|
}
|
|||
|
|
|||
|
// Output:
|
|||
|
// fred
|
|||
|
// tom
|
|||
|
// bob
|
|||
|
```
|
|||
|
|
|||
|
### 地图
|
|||
|
|
|||
|
```javascript
|
|||
|
var m = new Map();
|
|||
|
m.set(1, "black");
|
|||
|
m.set(2, "red");
|
|||
|
|
|||
|
for (var n of m) {
|
|||
|
console.log(n);
|
|||
|
}
|
|||
|
|
|||
|
// Output:
|
|||
|
// 1,black
|
|||
|
// 2,red
|
|||
|
```
|
|||
|
|
|||
|
### 组
|
|||
|
|
|||
|
```javascript
|
|||
|
var s = new Set();
|
|||
|
s.add(1);
|
|||
|
s.add("red");
|
|||
|
|
|||
|
for (var n of s) {
|
|||
|
console.log(n);
|
|||
|
}
|
|||
|
|
|||
|
// Output:
|
|||
|
// 1
|
|||
|
// red
|
|||
|
```
|
|||
|
|
|||
|
### 参数对象
|
|||
|
|
|||
|
```javascript
|
|||
|
// your browser must support for..of loop
|
|||
|
// and let-scoped variables in for loops
|
|||
|
|
|||
|
function displayArgumentsObject() {
|
|||
|
for (let n of arguments) {
|
|||
|
console.log(n);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
displayArgumentsObject(1, 'red');
|
|||
|
|
|||
|
// Output:
|
|||
|
// 1
|
|||
|
// red
|
|||
|
```
|
|||
|
|
|||
|
# 其他资源:
|
|||
|
|
|||
|
* [MDN链接](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Statements/for…of)
|
|||
|
* [MSDN链接](https://msdn.microsoft.com/library/dn858238%28v=vs.94%29.aspx?f=255&MSPPError=-2147217396)
|
|||
|
* [参数@@ iterator](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/arguments/@@iterator)
|