10th blog:For each···in / For···in / For···of

1)For each ... in

使用一个变量迭代一个对象的所有属性值,对于每一个属性值,有一个指定的语句块被执行。作为ECMA-357(E4X)标准的一部分,for each...in语句已被废弃,E4X中的大部分特性已被删除,但考虑到向后兼容,for each...in只会被禁用而不会被删除,可以使用ES6中新的for ... of语句来代替。

语法:

for each (variable in object) {
  statement
}

 

参数:

variable:用来遍历属性值的变量,前面的var关键字是可选的.该变量是函数的局部变量而不是语句块的局部变量.
object:该对象的属性值会被遍历.
statement:遍历属性值时执行的语句. 如果想要执行多条语句, 请用({ ... }) 将多条语句括住.

循环形式:

For Each 元素 In 组合

语句1

语句2

语句N

Next [元素]

描述:一些对象的内置属性是无法被遍历到的,包括所有的内置方法,例如String对象的indexOf方法。不过,大部分的用户自定义属性都是可遍历的。

 

2)For···in

以任意顺序遍历一个对象的可枚举属性。对于每个不同的属性,语句都会被执行。

语法:

for (variable in object) {...}

 

 

参数:

 

variable:在每次迭代时,将不同的属性名分配给变量。

 

object:被迭代枚举其属性的对象。

 

循环形式:

 

描述:for...in 循环只遍历可枚举属性。像 Array和 Object使用内置构造函数所创建的对象都会继承自Object.prototypeString.prototype的不可枚举属性,例如Strings的 indexOf()方法或Object的toString()方法。循环将遍历对象本身的所有可枚举属性,以及对象从其构造函数原型中继承的属性(更接近原型链中对象的属性覆盖原型属性)。

 

3)For···of

for...of语句在可迭代对象(包括 ArrayMapSetStringTypedArray,arguments 对象等等)上创建一个迭代循环,调用自定义迭代钩子,并为每个不同属性的值执行语句。

语法:

for (variable of iterable) {
    //statements
}

参数:

variable:在每次迭代中,将不同属性的值分配给变量。

iterable:被迭代枚举其属性的对象。

for与for in的区别:

var array = ['a']

//标准的for循环

for (var i = 1; i < array.length; i++) {

alert(array[i])

}

//for in循环

for (var i in array) {

alert(array[i])

}

-------------------------------------------------------------
参考:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript
-------------------------------------------------------------
posted @ 2018-11-11 17:28  卷公举  阅读(154)  评论(0编辑  收藏  举报