博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JS迭代
阅读量:4837 次
发布时间:2019-06-11

本文共 1970 字,大约阅读时间需要 6 分钟。

 

for each...in

 

使用一个变量迭代一个对象的所有属性值。对于每一个属性值,有一个指定的语句块被执行。

作为ECMA-357(E4X)标准的一部分,for each...in语句已被废弃,E4X中的大部分特性已被删除,但考虑到向后兼容,for each...in只会被禁用而不会被删除,可以使用ES6中新的for...of语句来代替。大部分非Mozilla浏览器都没有实现该标准,E4X并不是 ECMAScript 标准的一部分。

 

语法

for each (variable in object) {

statement
}

参数

variable

用来遍历属性值的变量,前面的var关键字是可选的。该变量是函数的局部变量而不是语句块的局部变量。

object

该对象的属性值会被遍历。

statement

遍历属性值时执行的语句。 如果想要执行多条语句,请用({ ... }) 将多条语句括住。

警告

永远不要使用for each...in语句遍历数组,仅用来遍历常规对象。

 

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

 

 

for...in

 

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

 

语法

for (variable in object) {...}

variable

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

object

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

 

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

 

删除,添加或者修改属性

for...in 循环以任意序迭代一个对象的属性(请参阅delete运算符,了解为什么不能依赖于迭代的表面有序性,至少在跨浏览器设置中)。如果一个属性在一次迭代中被修改,在稍后被访问,其在循环中的值是其在稍后时间的值。一个在被访问之前已经被删除的属性将不会在之后被访问。在迭代进行时被添加到对象的属性,可能在之后的迭代被访问,也可能被忽略。通常,在迭代过程中最好不要在对象上进行添加、修改或者删除属性的操作,除非是对当前正在被访问的属性。这里并不保证是否一个被添加的属性在迭代过程中会被访问到,不保证一个修改后的属性(除非是正在被访问的)会在修改前或者修改后被访问,不保证一个被删除的属性将会在它被删除之前被访问。

 

数组迭代和 for...in

数组索引只是具有整数名称的枚举属性,并且与通用对象属性相同。不能保证for ... in将以任何特定的顺序返回索引。for ... in循环语句将返回所有可枚举属性,包括非整数类型的名称和继承的那些。

因为迭代的顺序是依赖于执行环境的,所以数组遍历不一定按次序访问元素。因此当迭代访问顺序很重要的数组时,最好用整数索引去进行for循环(或者使用 Array.prototype.forEach() 或 for...of 循环)。

 

 

for...of

 

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

 

for (variable of iterable) {

//statements
}

variable

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

iterable

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

 

迭代Array

迭代String
迭代TypedArray
迭代Map
迭代Set
迭代arguments对象
迭代DOM集合
关闭迭代器
迭代生成器
迭代其他可迭代对象

 

for...of与for...in的区别

无论是for...in还是for...of语句都是迭代一些东西。它们之间的主要区别在于它们的迭代方式。

for...in 语句以原始插入顺序迭代对象的可枚举属性。

for...of 语句遍历可迭代对象定义要迭代的数据。

 

 

参考出处:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Statements/for_each...in

 

 

 

 

 

 

转载于:https://www.cnblogs.com/BOGY/p/9931505.html

你可能感兴趣的文章
一个PDO类
查看>>
ctf常见php弱类型分析
查看>>
用SQLite,Enterprise的报错
查看>>
c++ 属性类外只读技巧
查看>>
Python内置函数
查看>>
关于逆向360相关的一点感想
查看>>
去除表视图section的粘性问题
查看>>
msvsmon.exe
查看>>
OpenCV-waitKey()
查看>>
altera FIFO知识点
查看>>
Creating, Stopping, Re-Starting and Deleting a Timer in Oracle Forms
查看>>
说说JSON和JSONP,也许你会豁然开朗
查看>>
Trueimage备份ORACLE EBS恢复至新服务器IP修改系统配置步骤
查看>>
集合——ConcurrentHashMap
查看>>
Eclipse(Myeclipse)安装GoogleGWT
查看>>
ExtJS中实现嵌套表格
查看>>
JSON为什么那样红(另有洞天)
查看>>
PHP5.2.3连接 SQLSERVER 注意事项
查看>>
vmstat
查看>>
浅谈splay在区间问题中的应用
查看>>