İşlemlerin belirli bir koşulun true olduğu sürece yinelendiği döngüdür. Bu döngü türünde belirli bir koşul olur ve koşulun geçerli olduğu sürece döner. Koşulun geçerli olmadığı durumda döngü başlamaz, biter. Kullanım.
while (kosul) {//döngü kod bloğu}//kodlar...
while döngüsünde koşul true veya false olarak değer alır. Yani yapı şöyledir.
while (true) { // döngüye girilir ve tekrar buraya gelinir.//döngü kod bloğu}// kodlar...
while (false) { // döngüye girilmez. Çıkıştan devam eder.//döngü kod bloğu}//kodlar...
Örnek olarak.
let ePosta;//eposta adresi bir değer alana kadar döngü devam eder.while (ePosta ==undefined|| ePosta =='') { ePosta =prompt('E-Posta Adresinizi Giriniz.')}
let toplam;alert('Toplamı 20 olmayan iki sayı girdiğiniz sürece sürekli uyarı alacaksınız!')while (toplam !='20') { //toplam 20 olmadığı sürece döngü döner.let sayi1 =prompt('1.Sayıyı Giriniz:'), sayi2 =prompt('2.Sayıyı Giriniz:'); toplam =Number(sayi1) +Number(sayi2);//toplamları 20 olan sayılar yazarsanız döngü sonlanır}alert('Döngü Bitti');
let denemeSayisi =1, pin ='1234';alert('PIN Kodunu 3 kere deneme hakkınız var.');while (denemeSayisi <=3) {let girilenPin =prompt('Pin Kodunu Giriniz: ');if (pin === girilenPin) { denemeSayisi =5; //3'ten büyük bir değer ile sonraki döngüyü engelledik. } else { denemeSayisi++; }if (denemeSayisi ==4) { //4'ile hakkını sonlandırdık.alert('Deneme hakkınız bitmiştir.') }if (denemeSayisi ==5) { //5 olduysa bilmiştir. DOĞRU uyarısını verelim.alert('DOĞRU. Giriş yapılıyor...') }}
Bu döngü türüne elle oluşturulan bir sayaç koşul olarak verilirse sayaçlı döngü gibi çalışır. Fakat genel kanı sayaçsız olarak kullanım üzerinedir. Örnekler.
// Genel kullanımlet tcNo =prompt('TC Numaraınızı Giriniz: ');while ( tcNo.length!=11) { //tcNo uzunluğu 11 olmadığı sürece döner tcNo =prompt('TC No 11 haneli olmak zorundadır. Tekrar Giriniz: ')}alert('TC NO Uzunluğu doğru!');
// Sayaçlı örneklet i =1;while (i <=3) { //i küçük eşit 3 olduğu sürecealert(i); i++;}
number tipinde true sıfır olmayan (0) bir değer, false ise sıfır (0) değeridir. Örnek.
string tipinde ise true boş olmayan herhangi bir değer, false ise boş ('') olan değerdir. Örnek.
let karakterDizisi =' ', sayac =1;while (karakterDizisi) { //baştan trueif (sayac >3) { karakterDizisi =''; // sayac 3'ü geçerse boş değer ile false olur. } else {alert(`While Döngüsü Sayacı: ${sayac}`); } sayac++;}
Eğer while bloklarında tek satırlık kod yazacaksanız blok açmadan aynı satırda da yazabilirsiniz. Örnek.
let i =3;while (i) alert(i--);
do while Döngüsü
do while döngüsü ile döngüye ait kod blokları bir kez çalıştırılır ardından koşul kontrol edilir eğer koşul true ise tekrar başa dönerek döngüye devam eder kodları yeniden çalıştırır, false ise döngü olarak devam etmez. while döngüsünden farkı, koşul false bile olsa kod blokları en az bir sefer yürütülmüş olur.
Örnek olarak.
let i =0;do { i++;alert(i);} while(i ==0); // koşul doğru olmasa bile bir kez yürütülmüş olur.
Başka bir örnek olarak.
let ePosta; // ePosta şu an false//eposta adresi bir değer alana kadar döngü devam eder.do { ePosta =prompt('E-Posta Adresinizi Giriniz.');} while ( !ePosta ); // ePosta değer girilmezse false, değili (!) truealert(ePosta);
Farklı bir örnek olarak.
let ePosta; // ePosta şu an false//eposta adresi bir değer ve doğrulaması olana kadar döngü devam eder.do { ePosta =prompt('E-Posta Adresinizi Giriniz.');// ePosta için değer girilirse true olur boşsa falseif ( ePosta &&!confirm(`Eposta Adresinizi Onaylayın\n${ePosta}`) ) { ePosta =''; }} while ( !ePosta );alert(ePosta);