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]); }