for each...in,for...in,for...of的examples和explaintion
(1)for...in
for...in语句用来迭代(或者说遍历)对象的属性或数组中的元素,并对每个属性或方法执行运算。但是对象的方法不能由for...in语句来迭代,有些语句也不能有for...in来迭代,例如某些宿主对象的属性。和实力成员不同的是,静态成员也是不能迭代的。
例子:
1、用for...in语句遍历myObject对象的属性:
Js代码
- var myObject = {hisName: "javascript", age: 11, belonging: "ECMA" };
- for(var prop in myObject){
- document.write("myObject." + prop + "=" myObject[prop] + "<br>");
- }
执行的结果将会显示在浏览器中,如下:
- myObject.hisName = javascript
- myObject.belonging = ECMA
- myObject.age = 11
2、下面用for...in语句遍历数组的元素:
- var myArray = new Array("one","two","three");
- for(var index in myArray){
- document.write("myArray[" + index + "] = " + myArray[index] + "<br>"):
- }
执行的结果将会显示在浏览器中,如下:
- myArray[2] = three
- myArray[1] = two
- myArray[0] = one
(2)for each...in
与for...in语句不同的是,for each...in语句将遍历对象属性的值,而不是属性的名称。
例子:
1、用for each...in语句遍历myObject对象的属性:
- var myObject = {hisName: "javascript", age: 11, belonging: "ECMA" };
- for(var item in myObject){
- document.write(item+ "<br>");
- }
执行的结果将会显示在浏览器中,如下:
- javascript
- ECMA
- 11
2、下面用 for each...in 语句遍历数组的元素:
- var myArray = new Array("one","two","three");
- for(var item in myArray){
- document.write(item + "<br>"):
- }
执行的结果将会显示在浏览器中,如下:
- three
- two
- one
(3)for...of
JavaScript 原有的for...in
循环,只能获得对象的键名,不能直接获取键值。ES6 提供for...of
循环,允许遍历获得键值。for...of
循环调用遍历器接口,数组的遍历器接口只返回具有数字索引的属性。这一点跟for...in
循环也不一样。
例子:
1、
var arr = ['a', 'b', 'c', 'd'];
for (let a in arr) {
console.log(a); // 0 1 2 3
}
for (let a of arr) {
console.log(a); // a b c d
}
2、
let arr = [3, 5, 7];
arr.foo = 'hello';
for (let i in arr) {
console.log(i); // "0", "1", "2", "foo"
}
for (let i of arr) {
console.log(i); // "3", "5", "7"
}
转自:http://www.cnblogs.com/myzy/p/7238983.html
http://hjj20040849.iteye.com/blog/1504155