break - continue - label:

Standart kullanımda döngüler koşul kontrol edildiğinde true ise döngüye girer, kod bloklarını döngü bloğunun sonuna kadar yürütür ve tekrar koşulu kontrol eder. Bu böyle devam eder...

Fakat sizler kod bloklarının herhangi bir noktasında döngüyü sonlandırmak, kodları atlayarak sonraki tekerrüre geçmek veya daha üst bloktaki döngüyü kontrol etmek isteyebilirsiniz.

break Komutu

Bu komutu daha önce switch - case yapısında görmüştük. break komutu döngü bloklarını sonlandırmak için kullanılabilir. Buna döngüler de dahil. Örnek.

for (let i = 0; ; i++) { //normalde sonsuz döngü
    alert(i);
    if (i == 2) break; // i=2 olunca döngü kırılır.
}
let i = 0;
while (true) { //normalde sonsuz döngü
    i++;
    alert(i);
    if (i == 3) break; // i=3 olunca döngü kırılır.
}

if ile kullanmak şart değildir.

for (let i = 0; ; i++) { // normalde sonsuz döngü
    alert(i);
    break;
    alert('Bu uyarılar ekranda görülmeyecek');
    alert('Çünkü döngü kırıldı');
}
let i = 0;
while (true) { //normalde sonsuz döngü
    i++;
    alert(i);
    break;
    alert('Bu uyarılar ekranda görülmeyecek');
    alert('Çünkü döngü kırıldı');
}

break komutu sonsuz döngü yapılarıyla sık kullanılır.

continue Komutu

continue komutu bir döngünün doğrudan bir sonraki döngü adımına (tekerrüre) geçmesini sağlar. continue komutundan sonraki kodlar yürütülmez bir sonraki döngü adımı (tekerrür) başlar. Örnek.

for (let i = 1; i < 4 ; i++) {
    if (i == 2) continue; // 2.Döngü uyarısı continue sebebiyle alınamaz.
    alert(`${i}. Döngü`);
}
for (let i = 1; i < 4 ; i++) {
    if (i < 3) continue; // 1.Döngü ve 2.Döngü uyarısı alınamaz.
    alert(`${i}. Döngü`);
}
let i = 0;
while (i < 3) {
  i++;
  if (i == 2) continue;
  alert(`${i}. Döngü`)
}

Bu komutlar virgül operatörleri ile kullanıldığında yazım hatası verir. Bu sebeple virgül veya koşullu operatör ile kullanılmaz.

: Etiket (label) Tanımlayıcısı

break ve continue bulunduğunuz bloğu kontrol eder, peki ya daha üst blokta olan döngüleri alt bloktan nasıl kontrol ederiz. Bunun için : tanımlayıcısı kullanılır. Örnek.

ust_dongu: 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ü`);
        if (j == 3) break ust_dongu;
    } 
}
// veya etkiketi bir satır yukarı tek başına da koyabilirsiniz.
ust_dongu:
for (let i = 1; i < 4; i++) {
    for (let j = 1; j < 4; j++) {
        if (i == 2) break ust_dongu;
        alert(`${i}. Döngünün içindeki ${j}. Döngü`);
    } 
}

while döngüsü ile de kullanılabilir. Örnek.

let i = 0, j = 0;
ust_dongu:
while (i < 4) {
    i++;
    while (j < 4) {
        j++;
        alert(`${i}. Döngünün içindeki ${j}. Döngü`);
        if (j == 3) break ust_dongu;
    }
}

Aynı tanımlamalar continue ile de yapılabilir. Bu durumda sonraki döngü (tekerrür) için geçeceği yeri belirtmiş oluruz. Örnek.

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

Farklı örnek olarak.

ust_dongu:
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ü`);
        if ( confirm('Döngüyü bitirmek istiyor musunuz?') ) break ust_dongu;
    }
}

Etiket tanımlayıcıları break ve continue komutları ile birlikte döngüler için kullanılabilirler.

Last updated