function foreach(a,f,t){ try { a.forEach(f,t); } catch(e){ if(e === foreach.break)return; else throw e; } } foreach.break = new Error("StopIteration");
for...in
循环只遍历可枚举属性。像 Array 和 Object , Number等 js中基本包装类型的原型属性是不可枚举的 , 它们是使用内置构造函数所建立的对象都会继承自 Object.prototype 和 String.prototype 的不可枚举属性,例如
String
的
indexOf()
方法或者
Object 的
toString
方法。
循环将迭代对象的全部可枚举属性和从它的构造函数的 prototype 继承而来的(包括被覆盖的内建属性)。
Object
的对象都会继承到
hasOwnProperty
方法。这个方法能够用来检测一个对象是否含有特定的自身属性;和
in
运算符不一样,该方法会忽略掉那些从原型链上继承到的属性。
for(var value of myArray){ console.log(value); }
//遍历Set //基于单词数组建立一个set对象 var uniqueWords= new Set(words); for(var word of uniqueWords){ console.log(word); } //遍历Map //map是键值对组成的,因此须要解构来将键值对拆解为两个独立变量: for(var[key,value] of phoneBookMap){ console.log(key+"'s phone number is:" + value); } for-of不支持普通对象,若是你想迭代一个对象属性,能够用for-in循环或内建Object.keys()方法: for(var key of object.keys(someObject)){ console.log(key+":"+someObject[key]); }