نماد سایت تیک۴

ساختار کنترلی switch در جاوا اسکریپت

ار این ساختار در زمانی استفاده می شود که بخواهیم بر حسب مقادیر مختلف یک متغیر یا عبارت خاص ، دستورات متفاوتی اجرا شود.

شکل کلی استفاده از این ساختار به صورت زیر است:

switch    ( نام یک متغیر یا یک عبارت )

{

  case    مقدار ۱ :

  case 1 دستورات مربوط به

  case    مقدار ۲ :

  case 2 دستورات مربوط به

  .

  .

  .

  .


  case    n مقدار :

  case n دستورات مربوط به

  default :



دستورات پیش فرض ساختار که در صورت عدم برقراری مقادیر تمام case های فوق ، اجرا خواهند شد 

}

نحوه عملکرد این ساختار به شرح زیر است:

ابتدا در پرانتز مقابل واژه کلیدی switch ، یک متغیر یا عبارت اعلام می شود . همچنین در هر دستور case ، یک مقدار مرتبط با آن متغیر نیز تعیین می شود . برنامه مقدار متغیر را ( که از قبل توسط یک تابع یا دستور مقدار دهی شده است ) را با مقدار تعیین شده برای هر case به ترتیب مقایسه کرده و در صورت برابر بودن آنها ، دستورات آن case و case های بعد از آن را اجرا می کند . در واقع دستورات تا زمان رسیدن به یک دستور break اجرا می شوند.

نکته : برای جلوگیری از اجرای case های بعدی همراه با case ای که اجرا می شود ، باید در پایان دستورات هر case از واژه کلیدی break استفاده کرد . برای دریافت توضیحات بیشتر ، به قسمت توضیح دستور break در پایین صفحه بروید.

قسمت default ، دستورات پیش فرض ساختار را تعیین می کند ، که در صورت عدم برقراری مقادیر تمام case های ساختار ، دستورات آن قسمت اجرا خواهد شد.

نکات مهم:

نوع متغیر تعیین شده در قسمت switch و مقدارهای هر یک از case ها باید با هم یکسان و از یک نوع باشند.

به تعداد مورد نیاز می توان از دستور case در ساختار switch استفاده کرد.

تعیین قسمت default در ساختار switch ، اختیاری است و می تواند تعیین نشود.

مقدار هیچ دو case متفاوتی ، نباید با هم یکسان باشد.

مثال : در مثال زیر دو کادر متن و یک دکمه فرمان قرار داده شده است . کادر متن اول یک متن یا عدد از کاربر دریافت کرده و با کلیک بر روی دکمه فرمان و فراخوانی تابع ( ) hello ، خروجی در کادر متن دوم نمایش داده می شود.

عملکرد تابع ( ) hello به شرح زیر است:

این تابع مقدار کنترل کادر متن اول یعنی txtinput ، را در متغیر matn ذخیره کرده و سپس در یک ساختار switch ،بر حسب مقادیر مختلف خروجی را در کادر متن دوم یعنی txtresult نمایش می دهد.

توجه: در اینجا به دلیل عدم استفاده از دستور break در پایان دستورات هر case با اجرای هر کدام از case های مثال ، دستورات بقیه case ها نیز اجرا می شود . بنابراین همواره خروجی ما در این حالت خروجی قسمت default است.

< input type="text" id="txtinput " / >

< input type="button" name="clickme" onclick="hello( )" value="click me !" / >

< input type="text" id="txtresult" / >

< script type="text/javascript" >

  function hello( )

    {

      var matn = txtinput.value ;

      switch (matn)

      {

        case "1":

        txtresult.value = "one" ;

        case "2":

        txtresult.value = "two";

        case "3":

        txtresult.value = "three";

        default:

        txtresult.value = "bigger than 3";

      }

    }

< /script >

دستور break :

همانطور که در قسمت بالا نیز اشاره شد ، چنانچه یک دستور case در ساختار switch اجرا شود ، برنامه به طور اتوماتیک دستورات تمام case های بعد از آن را نیز اجرا خواهد کرد ، مگر اینکه به یک دستور break برسد . . برای جلوگیری از این مسئله ، باید در پایان دستورات هر case از دستور break استفاده کرد.

در این حالت در صورت وارد شدن برنامه به یک دستور یک case ، فقط دستورات آن case اجرا شده و اجرای بقیه case ها متوقف می شود.

شکل کلی استفاده از دستور break به صورت زیر است:

switch    ( نام یک متغیر یا یک عبارت )

{

  case    مقدار ۱ :

  case 1 دستورات مربوط به

  break ;

  case    مقدار ۲ :

  case 2 دستورات مربوط به

  break ;

  .

  .

  .

  .


  case    n مقدار :

  case n دستورات مربوط به

  break ;

  default :



دستورات پیش فرض ساختار که در صورت عدم برقراری مقادیر تمام case های فوق ، اجرا خواهند شد 

}

مثال: در مثال زیر ، مثال قسمت قبل را با دستور break بازنویسی کرده ایم . همانطور که در خروجی مشاهد می کنید ، در این حالت به دلیل استفاده از دستور braek در پایان هر case ، فقط دستورات آن case اجرا شده و از اجرای دستورات case های دیگر جلوگیری می شود . برای مشاهده خروجی در کادر متن txtinput متنی را وارد کرده و سپس بر روی دکمه فرمان کلیک کنید.

< input type="text" id="txtinput " / >

< input type="button" name="clickme" onclick="hello( )" value="click me !" / >

< input type="text" id="txtresult" / >

< script type="text/javascript" >

  function hello( )

    {

      var matn = txtinput.value ;

      switch (matn)

      {

        case "1":

        txtresult.value = "one" ;

        break ;

        case "2":

        txtresult.value = "two";

        break ;

        case "3":

        txtresult.value = "three";

        break ;

        default:

        txtresult.value = "bigger than 3";

      }

    }

< /script >
خروج از نسخه موبایل