GitHub 地址,歡迎star,查看更多整理的前端知識前端
for...in 語句以任意順序遍歷一個對象的可枚舉屬性。
for...in 遍歷對象自己的全部可枚舉屬性,以及對象從其構造函數原型中繼承的屬性。git
for (variable in object) {...}
variable
在每次迭代時,將不一樣的屬性名分配給變量。object
被迭代枚舉其屬性的對象。只遍歷自身的可枚舉屬性,能夠使用 hasOwnPropertygithub
for (var prop in obj) { if (obj.hasOwnProperty(prop)) { console.log(`obj.${prop} = ${obj[prop]}`); } }
for...of 語句在可迭代對象(包括 Array,Map,Set,String,TypedArray,arguments 對象等等)上建立一個迭代循環,調用自定義迭代鉤子,併爲每一個不一樣屬性的值執行語句。
對於for...of的循環,能夠由break, throw 或return終止(使用return報錯?)。frontend
for (variable of iterable) { //statements }
variable
在每次迭代中,將不一樣屬性的值分配給變量。iterable
被迭代枚舉其屬性的對象。let iterable = [10, 20, 30]; for (const value of iterable) { console.log(value); } // 10 // 20 // 30
區別示例:函數
Object.prototype.objCustom = function() {}; Array.prototype.arrCustom = function() {}; let iterable = [3, 5, 7]; iterable.foo = 'hello'; for (let i in iterable) { console.log(i); // 0, 1, 2, "foo", "arrCustom", "objCustom" } for (let i in iterable) { if (iterable.hasOwnProperty(i)) { console.log(i); // 0, 1, 2, "foo" } } for (let i of iterable) { console.log(i); // 3, 5, 7 }