2016-04-14 23 views
0

Bu uyarı neden 9 veya 5 değil başka bir sayı gösteriyor?if ve break ifadeleri ile döngü

for (var i = 0; i < 9; i+=2) 
{ 
    if (++i == 5) break; 
    else continue; 
} 
alert(i++); 
+2

Döngü dışında uyarı çağırıyorsunuz. Ve o zaman i'nin değeri 9'dur. Ve eğer senin koşulunu asla tatmin etmez. –

+0

Çok teşekkür ederim. – Alexey

cevap

0

Sen döngü başına endeksi birden çok kez artırılmıyor edilmektedir.

İlk geçiş 0'dır, çünkü if bloğunuzda 0 artırıyorsunuz.

Sıradaki geçiş 3'tür, çünkü artırıcınız for bloğunda.

sonra if blok Eğer for artış ila 4

sonra

6 için arttırır.

Ardından, if artışından 7 tanesi.

Ardından, for artışından 9 ve for artık geçerli değil ve bozuluyor.

1

Bu, beklediğiniz gibi 4 çalışmalıdır. senin for loop vücudun içinde if statement alışkanlık true için değerlendirilecek Çünkü i değeri 4.

1

olacak zaman

for (var i = 0; i < 9; i+=2) 
{ 
    if (i++ == 5) { 
    alert(i++); 
    }; 
    else continue; 
} 

bu uyaracaktır.

Kodunuzun altında olduğu gibi çalıştırılacak.

Yineleme 1

if(1 == 5) //false 

Yineleme 2

if(4 == 5) //false 

üçüncü sonra Yineleme 3

if(7 == 5) //false 

Yineleme, i, 9 olacaktır, bu nedenle for döngüsünün durumu bu noktada başarısız olur ve döngü biter. Daha sonra döngü dışında, uyarı i değerini 9

1

olarak yazdıracaktır. Çünkü, döngü içinde, if (++i == 5) break denetimi gerçekleştiğinde asla 5 olmamalıdır.

İlk yinelemede, ben 0'dur. Ama sonra ++i, 1'i olur, bu nedenle ikinci yinelemede, ben, döngünün başlangıcında 3'tür. Sonra ++1 ben gelecek tekrarında, bu 5 atlanır oluyor böylece 4'e gidin (dolayısıyla asla kopmaz) ve bu senin döngü bittiğinde bırakılır ne zaman, çünkü 9 uyarır 6.

haline yapar .