← 返回首页
حلقه چه مقادیری نشان میدهد؟
FA

ما قصد داریم این پروژهٔ متن‌باز را در دسترس همهٔ مردم در سرتاسر دنیا قرار دهیم.

به ترجمهٔ محتوای این آموزش به زبان خودتان کمک کنید/a>.

    جستجو
    جستجو
    تم روشنتم تیره
    عربيDanskEnglishEspañolفارسیFrançaisIndonesiaItaliano日本語한국어РусскийTürkçeУкраїнськаOʻzbek简体中文
    بازگشت به درس

    حلقه چه مقادیری نشان میدهد؟

    اهمیت: 4

    در هر بار گردش حلقه، حدس بزنید خروجی چه عددی است و با جواب مسئله مقایسه کنید.

    هر دو حلقه، مقادیر یکسانی را alert میکنند یا خیر؟

    1. حالت پیشوند ++i:

      let i = 0; while (++i < 5) alert( i );
    2. حالت پسوند i++:

      let i = 0; while (i++ < 5) alert( i );
    راه‌حل

    تمرین نشان می دهد که چگونه شکل های پسوند/پیشوند می توانند باعث نتایج متفاوت بشوند وقتی که در مقایسه ها استفاده می شوند.

    1. از 1 تا 4

      let i = 0; while (++i < 5) alert( i );

      مقدار اول i = 1 است، چون ++i اول i را افزایش می دهد و سپس مقدار جدید را بر می گرداند. پس مقایسه اول 5 < 1 است و alert مقدار 1 را نمایش می دهد.

      سپس ...4 ،3 ،2 – مقدارها یکی پس از دیگری نمایان می شوند. مقایسه همیشه از مقدار افزایش یافته استفاده می کند، چون ++ قبل از متغیر است.

      در نهایت، i = 4 است که به 5 افزایش پیدا می کند، مقایسه while(5 < 5) شکست می خورد، و حلقه متوقف می شود. بنابراین 5 نمایش داده نمی شود.

    2. از 1 تا 5

      let i = 0; while (i++ < 5) alert( i );

      اولین مقدار باز هم i = 1 است. شکل پسوند i++ i را افزایش می دهد و سپس مقدار قدیمی را بر می گرداند، بنابراین مقایسه i++ < 5 از i = 0 استفاده خواهد کرد (متضاد ++i < 5)

      اما صدا زدن alert جداگانه است. آن یک دستور دیگر است که بعد از افزایش و مقایسه اجرا می شود. پس i = 1 را دریافت می کند.

      سپس ...4 ،3 ،2

      بیایید روی i = 4 متوقف شویم. شکل پیشوند ++i آن را افزایش می دهد و از 5 در مقایسه استفاده می کند. اما اینجا ما شکل پسوند i++ را داریم. پس i را به 5 افزایش می دهد، اما مقدار قدیمی را بر می گرداند. به این دلیل مقایسه در واقع while(4 < 5) است – درست است، و کنترل به دست alert می افتد.

      مقدار i = 5 آخرین مقدار است، زیرا در مرحله بعد while(5 < 5) اشتباه می شود.