for each ... in 、for ... in、for ... of

for each … in

在对象属性的所有值上迭代指定的变量。对于每个不同的属性,执行指定的语句。

Syntax:

for each (variable in object){

       statement

}

variable

变量以迭代属性值,可选地使用var关键字声明。该变量是函数的本地变量,而不是循环。

object

迭代属性的对象。

statement

要为每个属性执行的语句。要在循环中执行多个语句,请使用block语句({ ... })对这些语句进行分组

Examples:

var sum = 0;

var obj = {prop1: 5, prop2: 13, prop3: 8};

for each (var item in obj) {

  sum += item;

}

console.log(sum); // logs "26", which is 5+13+8

 

for … in

以任意顺序迭代对象的可枚举属性。对于每个不同的属性,可以执行语句。

Syntax:

for (variable in object ) {

}

variable

每次迭代都会为变量分配不同的属性名称。

object

迭代非Symbol可枚举属性的对象。

Example:

var string1 = "";

var object1 = {a: 1, b: 2, c: 3};

 

for (var property1 in object1) {

  string1 += object1[property1];

}

 

console.log(string1);

// expected output: "123"

for … of

迭代可迭代对象(包括数组,类数组对象,迭代器和生成器)调用自定义迭代挂钩,并为每个不同属性的值执行语句

for (variable of iterable) {

statement

}

variable

在每次迭代时,将不同属性的值分配给变量

iterable

迭代其可迭代属性的对象。

Example:

let iterable = [10, 20, 30];

for (let value of iterable) {

  value += 1;

  console.log(value);

}

// 11

// 21

// 31

let iterable = 'boo';

 

for (let value of iterable) {

  console.log(value);

}

// "b"

// "o"

// "o"

原文地址:https://www.cnblogs.com/lizhidage/p/9915346.html