for...in
Neden biri size söyledi tahmin edebilirsiniz, ancak bir dizi için döngü kullanmak yanlış değil:
1.) Zaten bir dizi için bu amacı olan, ancak 'forEach' olarak adlandırılan daha fazla işlevsellik ve daha az sözdizimine sahip daha yüksek bir sipariş işlevi veya yöntemi vardır: Array.prototype.forEach(function(element, index, array) {} );
2.) Diziler daima bir uzunluğa sahip, ancak for...in
ve forEach
herhangi bir değeri için işlevi yürütmek yok'undefined'
sadece tanımlanmış bir değere sahip endeksler için. Bu nedenle, yalnızca bir değer atarsanız, bu döngüler yalnızca bir kez bir işlev yürütür, ancak bir dizi numaralandırıldığından, her zaman tanımlı bir değere sahip en yüksek dizine kadar bir uzunluğa sahip olur, ancak bunları kullanırken bu uzunluk fark edilmeyebilir döngüler.
3.) Döngü standardı, bir işlevi parametrelerde tanımladığınız kadar çok sayıda yürütür ve bir dizi numaralandığından, bir işlevi kaç kez yürütmek istediğinizi tanımlamak daha mantıklıdır. Diğer döngülerden farklı olarak for döngüsü, değer tanımlanmış olsun ya da olmasın, dizideki her dizin için bir işlev yürütebilir.
Özünde, herhangi bir döngüyü kullanabilirsiniz, ancak tam olarak nasıl çalıştıklarını hatırlamanız gerekir. Farklı döngülerin yinelendiği koşulları, ayrı işlevlerini anlayın ve farklı senaryolar için az çok uygun olduklarını anlayın.
Ayrıca, forEach
yöntemi kullanmak for...in
genel olarak döngüden daha iyi bir uygulama olarak düşünülebilir , çünkü yazmak daha kolaydır ve daha fazla işlevselliğe sahiptir, bu nedenle sadece bu yöntemi ve standardı kullanma alışkanlığına sahip olmak isteyebilirsiniz, ancak aramak.
Aşağıda, ilk iki döngünün yalnızca bir kez console.log deyimlerini yürütürken, döngü standardı işlevi belirtildiği kadar çok kez çalıştırır, bu durumda array.length = 6.
var arr = [];
arr[5] = 'F';
for (var index in arr) {
console.log(index);
console.log(arr[index]);
console.log(arr)
}
// 5
// 'F'
// => (6) [undefined x 5, 6]
arr.forEach(function(element, index, arr) {
console.log(index);
console.log(element);
console.log(arr);
});
// 5
// 'F'
// => Array (6) [undefined x 5, 6]
for (var index = 0; index < arr.length; index++) {
console.log(index);
console.log(arr[index]);
console.log(arr);
};
// 0
// undefined
// => Array (6) [undefined x 5, 6]
// 1
// undefined
// => Array (6) [undefined x 5, 6]
// 2
// undefined
// => Array (6) [undefined x 5, 6]
// 3
// undefined
// => Array (6) [undefined x 5, 6]
// 4
// undefined
// => Array (6) [undefined x 5, 6]
// 5
// 'F'
// => Array (6) [undefined x 5, 6]