- جاوا اسکریپت
- زمان 4 دقیقه
ار این ساختار در زمانی استفاده می شود که بخواهیم بر حسب مقادیر مختلف یک متغیر یا عبارت خاص ، دستورات متفاوتی اجرا شود.
شکل کلی استفاده از این ساختار به صورت زیر است:
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 >
دیدگاه خود را بیان کنید