ÛÚ© Ø¯Ø³ØªÙØ± ââswitch Ù
ÛâØªÙØ§Ùد جاÛگزÛÙ ÚÙØ¯ if پشت سر ÙÙ
Ø¨Ø´ÙØ¯.
اÛÙ Ø¯Ø³ØªÙØ± ØªÙØµÛÙ ÛÚ© Ù ØªØºÛØ± Ú©Ù Ù ÛâØªÙØ§Ùد ÚÙØ¯ Ù ÙØ¯Ø§Ø± داشت٠باشد را Ø±Ø§ØØªâتر Ù ÛâÚ©ÙØ¯.
The syntax
ÛÚ© Ø¯Ø³ØªÙØ± switch ÛÚ© ÛØ§ ÚÙØ¯ بÙÙÚ© case دارد Ù Ù
ÛâØªÙØ§Ù Ø¨Ø±Ø§Û Ø¢Ù ÛÚ© Ù
ÙØ¯Ø§Ø± Ø§Ø®ØªÛØ§Ø±Û Ù¾ÛØ´âÙØ±Ø¶ تعرÛ٠کرد.
٠بدÛÙ Ø´Ú©Ù ÙÙØ´ØªÙ Ù ÛâØ´ÙØ¯:
switch(x) {
case 'value1': // if (x === 'value1')
...
[break]
case 'value2': // if (x === 'value2')
...
[break]
default:
...
[break]
}
- در اÛÙ Ù
رØÙÙ ÚÚ© Ù
ÛâØ´ÙØ¯ Ú©Ù Ù
ÙØ¯Ø§Ø±
xدÙÛÙØ§ با Ù ÙØ¯Ø§Ø±caseاÙ٠برابر باشد. ک٠اÛÙØ¬Ø§ Ù ÙØ¯Ø§Ø± Ø¢Ùvalue1است. سپس برابر Ø¨ÙØ¯Ù آ٠با (value2) ÚÚ© Ù ÛâØ´ÙØ¯ ٠ب٠ÙÙ ÛÙ ØªØ±ØªÛØ¨ Ø§Ø¯Ø§Ù Ù Ù¾ÛØ¯Ø§ Ù ÛâÚ©ÙØ¯. - اگر Ù
ÙØ¯Ø§Ø± Ø¨Ø±Ø§Ø¨Ø±Û Ù¾ÛØ¯Ø§ Ú©ÙØ¯Ø
switchØ Ú©Ø¯ داخÙcaseÙ ÙØ±Ø¯ ÙØ¸Ø± را اجرا Ù ÛâÚ©ÙØ¯. ٠تا ز٠اÙÛ Ú©Ù Ø¨Ù ÙØ²Ø¯ÛÚ©âØªØ±ÛÙbreakبرسد ÛØ§ Ø¨Ù Ù¾Ø§ÛØ§Ùswitchبرسد اÛ٠کار را ادا٠٠٠ÛâØ¯ÙØ¯. - اگر با ÙÛÚâکداÙ
از
caseÙØ§ Ø¬ÙØ± ÙØ´ÙØ¯Ø Ú©Ø¯defaultاجرا Ù ÛâØ´ÙØ¯. Ø§ÙØ¨ØªÙ اگر ÙØ¬Ùد داشت٠باشد.
ÛÚ© ٠ثاÙ
ÛÚ© Ù
ثا٠از Ø¯Ø³ØªÙØ± switch (کد اجرا Ø´Ø¯Ù ÙØ§ÛÙØ§Ûت شد٠است):
let a = 2 + 2;
switch (a) {
case 3:
alert( 'Too small' );
break;
case 4:
alert("Exactly!");
break;
case 5:
alert( 'Too big' );
break;
default:
alert( "I don't know such values" );
}
در اÛÙØ¬Ø§ Ø¯Ø³ØªÙØ± switch با Ù
ÙØ§ÛسÙâÛ a با case اÙÙ Ø´Ø±ÙØ¹ Ù
ÛâÚ©ÙØ¯. ک٠در اÛÙØ¬Ø§ Ù
ÙØ¯Ø§Ø± Ø¢Ù 3 است Ù ØªØ·Ø§Ø¨Ù ÙØ¯Ø§Ø±Ùد.
سپس ب٠سراغ 4 Ù
ÛâØ±ÙØ¯. اÛÙ ÛÚ©Û Ø¨Ø±Ø§Ø¨Ø± است Ù ØªØ·Ø§Ø¨Ù Ù¾ÛØ¯Ø§ Ù
ÛâÚ©ÙØ¯. پس Ø§Ø¬Ø±Ø§Û Ú©Ø¯ از case 4 Ø´Ø±ÙØ¹ Ù
ÛâØ´ÙØ¯ ٠تا ÙØ²Ø¯ÛÚ©âØªØ±ÛÙ break اداÙ
Ù Ù
ÛâÛØ§Ø¨Ø¯.
اگر break ÙØ¬Ùد ÙØ¯Ø§Ø´ØªÙ Ø¨Ø§Ø´Ø¯Ø caseÙØ§Û Ø¨Ø¹Ø¯Û ÙÙ
اجرا Ù
ÛâØ´ÙÙØ¯.
ÛÚ© Ù
ثا٠بدÙÙ break:
let a = 2 + 2;
switch (a) {
case 3:
alert( 'Too small' );
case 4:
alert( 'Exactly!' );
case 5:
alert( 'Too big' );
default:
alert( "I don't know such values" );
}
در Ù
Ø«Ø§Ù Ø¨Ø§ÙØ§ ÙØ± س٠alert بÙâØªØ±ØªÛØ¨ اجرا Ø®ÙØ§ÙÙØ¯ شد:
alert('Exactly!');
alert('Too big');
alert("I don't know such values");
switch/case تبدÛÙ Ø´ÙØ¯ÙÙ
در switch Ù ÙÙ
در case Ù
ÛâØªÙØ§Ù از عبارتâÙØ§Û ÙØ±Ø§Ø±Ø¯Ø§Ø¯Û Ø§Ø³ØªÙØ§Ø¯Ù کرد.
Ø¨Ø±Ø§Û Ù Ø«Ø§Ù:
let a = "1";
let b = 0;
switch (+a) {
case b + 1:
alert("this runs, because +a is 1, exactly equals b+1");
break;
default:
alert("this doesn't run");
}
در اÛÙØ¬Ø§ a+ برابر با 1 است Ù ÙÙØªÛ با b + 1 در case Ù
ÙØ§Ûس٠Ù
ÛâØ´ÙØ¯Ø کد Ù
ØªÙØ§Ø¸Ø± اجرا Ù
ÛâØ´ÙØ¯.
گرÙÙâØ¨ÙØ¯Û âcaseâ
ÚÙØ¯ case Ù
ختÙÙ Ú©Ù ÛÚ© کد Ø¯Ø§Ø±ÙØ¯Ø Ù
ÛâØªÙØ§Ùد با ÙÙ
ÙØ±Ø§Ø± Ø¨Ú¯ÛØ±Ùد.
Ø¨Ø±Ø§Û Ù
ثا٠اگر Ù
ÛâØ®ÙØ§ÙÛÙ
ÛÚ© کد ÛÚ©Ø³Ø§Ù Ø¨Ø±Ø§Û case 3 Ù case 5 اجرا Ø´ÙØ¯:
let a = 3;
switch (a) {
case 4:
alert('Right!');
break;
case 3: // (*) grouped two cases
case 5:
alert('Wrong!');
alert("Why don't you take a math class?");
break;
default:
alert('The result is strange. Really.');
}
ØØ§Ùا 3 Ù 5 Ù¾ÛØ§Ù
ÛکساÙÛ ÙÙ
Ø§ÛØ´ Ù
ÛâØ¯ÙÙØ¯.
اÛÙ ØªÙØ§ÙاÛÛ Ú©Ù Ù
ÛâØªÙØ§Ù caseÙØ§Û Ù
ختÙ٠را گرÙÙâØ¨ÙØ¯Û Ú©Ø±Ø¯Ø Ø¨Ù Ø§Û٠خاطر است Ú©Ù switch/case ÚÚ¯ÙÙ٠بدÙÙ break کار Ù
ÛâÚ©ÙØ¯. اÛÙØ¬Ø§ Ø§Ø¬Ø±Ø§Û Ú©Ø¯ case 3 از خط (*) Ø´Ø±ÙØ¹ Ù
ÛâØ´ÙØ¯ ٠تا خط case 5 اداÙ
Ù Ù¾ÛØ¯Ø§ Ù
ÛâÚ©ÙØ¯. ÚØ±Ø§ Ú©Ù ÙÛÚ break ÙØ¬Ùد ÙØ¯Ø§Ø±Ø¯.
ÙÙØ¹ داد٠٠Ù٠است
اجاز٠دÙÛØ¯ ØªØ§Ú©ÛØ¯ Ú©ÙÛÙ Ú©Ù Ø¨Ø±Ø±Ø³Û Ø¨Ø±Ø§Ø¨Ø±Û Ú©Ø§Ù ÙØ§ سختâÚ¯ÛØ±Ø§Ù٠است. Ù ÙØ¯Ø§Ø± ÙØ± Ø¯Ù Ø¨Ø§ÛØ¯ از ÛÚ© ÙÙØ¹ داد٠باشد. در ØºÛØ± اÛÙ ØµÙØ±Øª با ÙÙ ØªØ·Ø§Ø¨Ù Ù¾ÛØ¯Ø§ ÙÙ ÛâÚ©ÙÙØ¯.
Ø¨Ø±Ø§Û Ù Ø«Ø§Ù Ú©Ø¯ Ø²ÛØ± را در ÙØ¸Ø± Ø¨Ú¯ÛØ±Ûد:
let arg = prompt("Enter a value?");
switch (arg) {
case '0':
case '1':
alert( 'One or zero' );
break;
case '2':
alert( 'Two' );
break;
case 3:
alert( 'Never executes!' );
break;
default:
alert( 'An unknown value' )
}
- براÛ
0Ù1اÙÙÛÙalertاجرا Ù ÛâØ´ÙØ¯. - براÛ
2دÙÙ ÛÙalertاجرا Ù ÛâØ´ÙØ¯. - ÙÙÛ Ø¨Ø±Ø§Û
3Ù ÙØ¯Ø§Ø±promptÛÚ© string است Ù"3"با3با===برابر ÙÛØ³Øª. ÛØ¹ÙÛ Ø¯Ø±case 3ÛÚ© کد ٠رد٠دارÛÙ . ٠بÙâÙÙ Û٠دÙÛÙdefaultاجرا Ù ÛâØ´ÙØ¯.
ÙØ¸Ø±Ø§Øª
<code>Ø§Ø³ØªÙØ§Ø¯Ù Ú©ÙÛØ¯Ø Ø¨Ø±Ø§Û ÚÙØ¯Û٠خط â کد را درÙ٠تگ<pre>ÙØ±Ø§Ø± دÙÛØ¯Ø Ø¨Ø±Ø§Û Ø¨ÛØ´ از د٠خط کد â Ø§Ø² ÛÚ© جعبÙÙ Ø´ÙÛ Ø§Ø³ØªÙØ§Ø¯Ù Ú©ÙÛØ¯. (plnkrØ jsbinØ codepenâ¦)