第一句子网 - 唯美句子、句子迷、好句子大全
第一句子网 > for each in for in for of

for each in for in for of

时间:2020-04-17 20:03:19

相关推荐

for each in     for in      for of

for each...in

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

for each...in是ECMA-357 (E4X)标准的一部分, 大部分非Mozilla浏览器都没有实现该标准, E4X并不是 ECMAScript 标准的一部分.

作为ECMA-357(E4X)标准的一部分,for each...in语句已被废弃,E4X中的大部分特性已被删除,但考虑到向后兼容,for each...in只会被禁用而不会被删除,可以使用ES6中新的for...of语句来代替.

语法:

参数:

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

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

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

for...in

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

语法:

参数:

variable在每次迭代时,将不同的属性名分配给变量。object被迭代其枚举属性的对象。

for..in不应该被用来迭代一个下标顺序很重要的Array.

数组索引仅是可枚举的整数名,其他方面和别的普通对象属性没有什么区别。for...in 并不能够保证返回的是按一定顺序的索引,但是它会返回所有可枚举属性,包括非整数名称的和继承的。

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

仅迭代自身的属性

如果你只要考虑对象本身的属性,而不是它的原型,那么使用getOwnPropertyNames()或执行hasOwnProperty()来确定某属性是否是对象本身的属性(也能使用propertyIsEnumerable)。另外,如果你知道外部不存在任何的干扰代码,你可以扩展内置原型与检查方法。

for...of

ECMAScript 6新方法,使用时参考/zh-CN/docs/Web/JavaScript/Reference/Statements/for...of

for...of- 一个相似的语法,用来遍历可迭代对象,有时候效果等同于for each...in语句.对于for...of的循环,可以由break,throwreturn终止。在这些情况下,迭代器关闭。

不要重用生成器

生成器不应该重用,即使for...of循环的提前终止,例如通过break关键字。在退出循环后,生成器关闭,并尝试再次迭代,不会产生任何进一步的结果。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。