giriş
Üniversitedeki zamanımdan beri Java, JavaScript, Pascal, ABAP'de program yaptım , PHP, Progress 4GL, C / C ++ ve muhtemelen şu anda düşünemediğim birkaç dilde programladım.
Hepsinin kendi dilbilimsel özerklikleri olmasına rağmen, bu dillerin her biri aynı temel kavramların çoğunu paylaşır. Bu tür kavramlar prosedürleri / işlevleri, IF
-tatimleri, FOR
-döngüleri ve- WHILE
döngülerini içerir.
Geleneksel- for
döngü
Geleneksel bir for
döngü üç bileşene sahiptir:
- Başlatma: görünüm bloğu ilk kez yürütülmeden önce yürütülür
- Koşul: döngü bloğu yürütülmeden önce bir koşulu kontrol eder ve yanlışsa döngüden çıkar
- Sonradan düşünülmüş: döngü bloğu yürütüldükten sonra her seferinde gerçekleştirilir
Bu üç bileşen birbirinden bir ;
sembol ile ayrılır . Bu üç bileşenin her biri için içerik isteğe bağlıdır, yani aşağıdakiler mümkün olan en düşük for
döngüdür:
for (;;) {
// Do stuff
}
Tabii ki, çalışmayı durdurmak için bu döngüye bir if(condition === true) { break; }
veya bir yer eklemeniz gerekecek .if(condition === true) { return; }
for
Genellikle, başlatma işlemi bir dizin bildirmek için kullanılır, koşul bu dizini minimum veya maksimum değerle karşılaştırmak için kullanılır ve sonradan gelenler dizini artırmak için kullanılır:
for (var i = 0, length = 10; i < length; i++) {
console.log(i);
}
for
Bir dizi arasında döngü yapmak için geleneksel bir döngü kullanma
Bir dizide döngü yapmanın geleneksel yolu şudur:
for (var i = 0, length = myArray.length; i < length; i++) {
console.log(myArray[i]);
}
Veya, geriye doğru döngü yapmayı tercih ederseniz, bunu yaparsınız:
for (var i = myArray.length - 1; i > -1; i--) {
console.log(myArray[i]);
}
Bununla birlikte, örneğin bunun gibi birçok varyasyon mümkündür:
for (var key = 0, value = myArray[key], length = myArray.length; key < length; value = myArray[++key]) {
console.log(value);
}
...ya da bu...
var i = 0, length = myArray.length;
for (; i < length;) {
console.log(myArray[i]);
i++;
}
...ya da bu:
var key = 0, value;
for (; value = myArray[key++];){
console.log(value);
}
Hangisi daha iyi çalışıyorsa, büyük ölçüde hem kişisel zevkiniz hem de uyguladığınız özel kullanım durumu söz konusudur.
Bu varyasyonların her birinin, çok eski olanlar da dahil olmak üzere tüm tarayıcılar tarafından desteklendiğini unutmayın!
Bir while
döngü
Döngüye bir alternatif for
, bir while
döngüdür. Bir dizi arasında geçiş yapmak için şunları yapabilirsiniz:
var key = 0;
while(value = myArray[key++]){
console.log(value);
}
Geleneksel for
döngüler gibi, while
döngüler de en eski tarayıcılar tarafından desteklenir.
Ayrıca, while while döngüsünün loop olarak yeniden yazılabileceğini unutmayın for
. Örneğin, while
döngü bu döngü ile aynı şekilde davranır for
:
for(var key = 0; value = myArray[key++];){
console.log(value);
}
For...in
ve for...of
JavaScript'te şunları da yapabilirsiniz:
for (i in myArray) {
console.log(myArray[i]);
}
Bununla birlikte, bu, for
her durumda geleneksel bir döngü ile aynı şekilde davranmadığı ve dikkate alınması gereken potansiyel yan etkiler olduğu için dikkatli kullanılmalıdır . Bkz "in için ..." Neden kullanıyor diziye yineleme kötü bir fikir ile?daha fazla ayrıntı için.
Alternatif olarak for...in
, şimdi de var for...of
. Aşağıdaki örnek, bir for...of
döngü ile döngü arasındaki farkı gösterir for...in
:
var myArray = [3, 5, 7];
myArray.foo = "hello";
for (var i in myArray) {
console.log(i); // logs 0, 1, 2, "foo"
}
for (var i of myArray) {
console.log(i); // logs 3, 5, 7
}
Ayrıca, hiçbir Internet Explorer sürümünün for...of
( Edge 12+ desteklemediğini) desteklemediğini ve for...in
en az Internet Explorer 10 gerektirdiğini düşünmeniz gerekir .
Array.prototype.forEach()
Aşağıdaki sözdizimini kullanan for
-loops seçeneğine bir alternatif Array.prototype.forEach()
:
myArray.forEach(function(value, key, myArray) {
console.log(value);
});
Array.prototype.forEach()
Internet Explorer 9 ve sonraki sürümlerin yanı sıra tüm modern tarayıcılar tarafından desteklenir.
Kütüphaneler
Son olarak, birçok yardımcı program kütüphanesinin de kendi foreach
varyasyonu vardır. AFAIK, en popüler üç tanesi:
jQuery.each()
, jQuery'de :
$.each(myArray, function(key, value) {
console.log(value);
});
_.each()
, Underscore.js'de :
_.each(myArray, function(value, key, myArray) {
console.log(value);
});
_.forEach()
, Lodash.js'de :
_.forEach(myArray, function(value, key) {
console.log(value);
});