博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
for each in for in for of
阅读量:4691 次
发布时间:2019-06-09

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

for each...in

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

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

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

语法:

1
2
3
for
each (variable
in
object) {
  
statement
}

  

参数:

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

 

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

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

for...in 

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

语法:

1
for
(variable
in
object) {...}

  

参数:

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

 

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

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

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

仅迭代自身的属性

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

1
2
3
4
5
6
7
8
9
10
var
obj = {a:1, b:2, c:3};
     
for
(
var
prop
in
obj) {
  
console.log(
"obj."
+ prop +
" = "
+ obj[prop]);
}
 
// Output:
// "obj.a = 1"
// "obj.b = 2"
// "obj.c = 3"

  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var
triangle = {a:1, b:2, c:3};
 
function
ColoredTriangle() {
  
this
.color =
"red"
;
}
 
ColoredTriangle.prototype = triangle;
 
var
obj =
new
ColoredTriangle();
 
for
(
var
prop
in
obj) {
  
if
( obj.hasOwnProperty( prop ) ) {
    
console.log(
"o."
+ prop +
" = "
+ obj[prop]);
  
}
}
 
// Output:
// "o.color = red"

  

for...of

 ECMAScript 6新方法,使用时参考

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

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

转载于:https://www.cnblogs.com/wwwlinguangcom/p/9932577.html

你可能感兴趣的文章
LRJ
查看>>
Struts2环境搭建
查看>>
Linux: Check version info
查看>>
Javascript-正则表达式-开发中的使用.
查看>>
stl学习之测试stlen,cout等的运行速度
查看>>
入门GoldenGate总结
查看>>
魔戒三曲,黑暗散去;人皇加冕,光明归来
查看>>
Error和Exception
查看>>
Python和Singleton (单件)模式[转载]
查看>>
hibernate多对多单向(双向)关系映射
查看>>
二分查找题
查看>>
httpclient设置proxy与proxyselector
查看>>
IT常用单词
查看>>
拓扑排序
查看>>
NYOJ--32--SEARCH--组合数
查看>>
JMS
查看>>
gulpfile 压缩模板
查看>>
【34.14%】【BZOJ 3110】 [Zjoi2013]K大数查询
查看>>
【 henuacm2016级暑期训练-动态规划专题 A 】Cards
查看>>
第五篇:白话tornado源码之褪去模板的外衣
查看>>