for Döngüsü

İşlemlerin belirli bir sayıda yinelendiği döngüdür. Bu döngü türünde bir sayaç olur ve bu sayacın başlama pozisyonu, bitiş pozisyonu ve artış/azalış miktarı döngünün başında belirtilir. Kullanım:

for (baslamaPozisyonu; bitisPozisyonu; artisAzalisMiktari) {
    //döngü kod bloğu
}

Örnek olarak:

for (let i = 0; i < 5; i += 1) {
    alert(i);
}

for döngüsünde sayaç olarak daha önce bildirilmiş bir değişkeni kullanabiliriz.

let i;
for (i = 0; i < 5; i += 1) {
    alert(i);
}

for döngüsünde sayaç başlama pozisyonunda da bildirilebilir. Diğerinden farkı değişkenin bellekte tutulma süresidir. Önceden bildirirseniz o kapsam süresince, for döngüsü başında bildirirseniz döngü bitene kadar bellekte yer kaplar.

for (let i = 0; i < 5; i += 1) {
    alert(i);
}

for döngüsünde sayaca ait bitiş pozisyonu true olursa döngü devam eder, false olursa döngüden çıkılır.

// bitiş pozisyonu ilk kullanımda true bir sonrakinde false, tek sefer döner.
for (let i = 0; i == 0; i++) {
    alert('Merhaba');
}
//i değişkeninin ömrü bitti bellekten kaldırıldı.

Bu yapı sebebiyle genellikle < veya > ile bitiş pozisyonu verilir. == veya === ile verilen bitiş pozisyonları for döngüsü için mantıksız bir kullanımdır. Sonsuz döngü ve hiç dönmeyen bir döngü için şunu deneyebilirsiniz. Örnekler.

//Sonsuz Döngü
for (let i = 0; true; i++) {
    alert(i);
}
//veya sayacın bitiş pozisyonunu hep true olacak şekilde ayarlayın
for (let i = 0; i > -1; i++) {
    alert(i);
}
//Hiç Dönmeyen Döngü
for (let i = 0; false; i++) {
    alert(i);
}
//veya sayacın bitiş pozisyonunu ilk döngüde false olacak şekilde ayarlayın
for (let i = 0; i == 2; i++) {
    alert(i);
}
//hiç döngüye girilmeden çıkıldı. i değişkeninin ömrü bitti kaldırıldı.

for döngüsünde sayacın artış/azalış miktarı hep artış olma zorunluluğu yoktur. Azalış miktarı olacak şekilde de verilebilir. Örnek.

for (let i = 5; i > 0; i--) {
    alert(i);
}

for döngüsünde sayacın artış/azalış miktarı azalış olarak da verilebilir. Örnek.

for (let i = 5; i > 0; i--) {
    alert(i);
}

Arış/Azalış miktarı ifadesini sayacın başlama pozisyonundan bitiş pozisyonuna götürecek bir mantıkla ifade etmeniz gerekir. Aksi takdirde sonsuz döngü oluşturmuş olursunuz.

for döngüsünde let ile deklare ettiğiniz değişken blok bittikten sonra bellekten kaldırıldığı için sonrasında tekrar deklare ederseniz herhangi bir hata almazsınız. Örnek.

for (let i = 5; i > 0; i -= 2) {
    alert(i);
}
let i = 'sayaç';
alert(i);

Döngüler iç içe (nested) olarak da kullanılabilir. Örnek.

for (let i = 1; i < 4; i++) {
    for (let j = 1; j < 4; j++) {
        alert(`${i}. Döngünün içindeki ${j}. Döngü`);
    } 
}

Bazı Bölümleri Pas Geçme

Sayaç olarak kullanılacak değişken daha önceden bildirilmiş ve değer atanmış ise bu kısım pas geçilebilir.

let i = 0;
for ( ; i < 3; i++) {
    alert(i);
}

Aynı şekilde eğer artış/azalış miktarını döngü içinde duruma göre değiştirmek istiyorsanız bu kısmı da pas geçebilirsiniz. Fakat döngü içerisinde sayacı manipüle etmezseniz sonsuz bir döngü elde edersiniz. Örnek.

for (let i = 0; i <= 10; ) {
    alert(i);
    i += 5;
}

Bitiş pozisyonunu da pas geçebilirsiniz. Bu şekilde sürekli true ile sonsuz bir döngü elde edersiniz. Örnek.

for (let i = 0; ; i += 5) {
    alert(i);
}

Hepsini pas geçerek sayaçsız ve sonsuz bir döngü elde edebilirsiniz.

for (;;) {
    alert('Sonsuz döngü');
}

Eğer for bloklarında tek satırlık kod yazacaksanız blok açmadan aynı satırda da yazabilirsiniz. Örnek.

for (let i = 0; i < 3; i++) alert(i);

String'in for ile Yinelenmesi

String tipinin sıralanmış elemanlardan oluşması yinelenebilir bir yapı sunmaktadır. Döngülenebilir yapılar for deyiminin farklı şekilleriyle kullanılır.

for ... of yinelemesi ile string'ler şu şekilde kullanılır. Örnek.

let str = 'Tekerrür';
for (let karakter of str) {
    alert(karakter);
}

String'ler ilkel (değer) tipler olduğu için stack bölümünde tutulurlar ve bu bölümdeki verilerin boyutu belirlidir. Bu sebeple bir parçası değiştirilemez, yani immutable'dir.

let str = 'Tekerrür';
for (let karakter of str) {
    if (karakter == 'k') {
        alert(karakter); // k harfi çıkar.
        karakter = 'ş'; // immutable, değiştirilemez.
        alert(str); // Tekerrür
    }
}

Last updated