我所lforEach() 方法用於呼叫陣列的每個元素,並將元素傳遞給回撥函式。
注意: forEach() 對於空陣列是不會執行回撥函式的。
示例程式碼:
var arr = [4, 9, 16, 25];
arr.forEach(function(value, index) {
console.log(index+': '+value+'\n');
});
複製程式碼
結果如下:
for/in 語句用於迴圈物件屬性。
迴圈中的程式碼每執行一次,就會對陣列的元素或者物件的屬性進行一次操作。
示例程式碼:
var person = {
name: 'jack',
age: 18,
gender: 'male'
};
for(key in person) {
console.log(key+': '+person[key]+'\n');
}
複製程式碼
結果如下:
需要注意的是,如果使用for in語句遍歷陣列,可能會出現以下問題:
1. 索引為字串型別,不能直接進行幾何運算。
2. 遍歷順序有可能不是按照實際陣列的內部順序。
3. 使用for in會遍歷陣列所有的可列舉屬性,包括原型。
如下所示:
var arr = [12, 43, 19];
Array.prototype.index = 110;//這裡的原型屬性也會被列印出來
for(var index in arr) {
console.log(index+': '+arr[index]+'\n');
}
複製程式碼
執行結果:
for of語句和for in 語句相比使用更方便,它是ES6新提出的遍歷陣列的方式,
具體使用:
var arr = [12, 43, 19];
Array.prototype.index = 110;//此原型屬性不會被列印出來
for(var value of arr) {
console.log(value+'\n');
}
複製程式碼
結果如下:
綜述:foreach更多的用來遍歷陣列,但使用比較複雜;for in 一般常用來遍歷
物件;for of 用來遍歷陣列非常方便且比較安全。