While tsikli qaysi qiymatlarni ko'rsatadi?
Har bir tsikl iteratsiyasi uchun qaysi qiymatni chiqarishini yozing va keyin uni natija bilan solishtiring.
Har ikki tsikl bir xil qiymatlarni alert orqali chiqariladimi, yoki yo’qmi?
-
++iprefiks shakli:let i = 0; while (++i < 5) alert(i); -
Postfiks shakli
i++let i = 0; while (i++ < 5) alert(i);
Vazifa postfiks / prefiks shakllari taqqoslashda foydalanilganda qanday qilib turli xil natijalarga olib kelishi mumkinligini namoyish etadi.
-
1 dan 4 gacha
let i = 0; while (++i < 5) alert(i);Birinchi qiymat
i = 1dir, chunki++ iavvalini oshiradi va keyin yangi qiymatni qaytaradi. Shunday qilib, birinchi taqqoslash1 < 5vaalert1ni ko’rsatadi.Keyin
2,3,4...ga amal qiling – qiymatlar birin-ketin paydo bo’ladi. Taqqoslash har doim ko’paytirilgan qiymatdan foydalanadi, chunki++o’zgaruvchandan oldin.Va nihoyat,
i = 45ga oshiriladi, taqqoslashwhile(5 < 5)ishlamay qoladi va tsikl to’xtaydi. Shunday qilib,5ko’rsatilmaydi. -
1 dan 5 gacha
let i = 0; while (i++ < 5) alert(i);Birinchi qiymat yana
i = 1dir.i++ning postfiks shakliini oshiradi va keyin eski qiymatini qaytaradi, shuning uchuni++ < 5taqqoslashidai = 0ishlatiladi (++i < 5ga zid).Ammo
alertchaqiruvi alohida. Bu o’sish va taqqoslashdan keyin bajariladigan yana bir ifoda. Shunday qilib, u joriyi = 1ni oladi.Keyin
2,3,4...Keling,
i = 4da to’xtaylik.++iprefiksi uni ko’paytiradi va taqqoslashda5dan foydalanadi. Ammo bu erda bizi++postfiksi shakliga egamiz. Shunday qilib, uidan5gacha ko’tariladi, lekin eski qiymatni qaytaradi. Shuning uchun taqqoslash aslidawhile (4 < 5)– to’g’ri va boshqaruvalertga o’tadi.i = 5qiymati oxirgi hisoblanadi, chunki keyingi bosqichdawhile(5 < 5)noto’g’ri.