switch è¯å¥å¯ä»¥æ¿ä»£å¤ä¸ª if 夿ã
switch è¯å¥ä¸ºå¤åæ¯éæ©çæ
嵿ä¾äºä¸ä¸ªæ´å
·æè¿°æ§çæ¹å¼ã
è¯æ³
switch è¯å¥æè³å°ä¸ä¸ª case 代ç ååä¸ä¸ªå¯éç default 代ç åã
å°±åè¿æ ·ï¼
switch(x) {
case 'value1': // if (x === 'value1')
...
[break]
case 'value2': // if (x === 'value2')
...
[break]
default:
...
[break]
}
- æ¯è¾
xå¼ä¸ç¬¬ä¸ä¸ªcaseï¼ä¹å°±æ¯value1ï¼æ¯å¦ä¸¥æ ¼ç¸çï¼ç¶åæ¯è¾ç¬¬äºä¸ªcaseï¼value2ï¼ä»¥æ¤ç±»æ¨ã - 妿ç¸çï¼
switchè¯å¥å°±æ§è¡ç¸åºcaseä¸ç代ç åï¼ç´å°éå°æé è¿çbreakè¯å¥ï¼æè ç´å°switchè¯å¥æ«å°¾ï¼ã - å¦ææ²¡æç¬¦åç caseï¼åæ§è¡
default代ç åï¼å¦ædefaultåå¨ï¼ã
举个ä¾å
switch çä¾åï¼é«äº®çé¨åæ¯æ§è¡ç case é¨åï¼ï¼
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 ä»ç¬¬ä¸ä¸ª case 忝å¼å§å° a çå¼ä¸ case åçå¼è¿è¡æ¯è¾ï¼ç¬¬ä¸ä¸ª 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ï¼è¿ä¸ªå¼è· case ä¸ b + 1 ç¸æ¯è¾ï¼ç¶åæ§è¡å¯¹åºç代ç ã
âcaseâ åç»
å
±äº«å䏿®µä»£ç çå 个 case 忝å¯ä»¥è¢«å为ä¸ç»ï¼
æ¯å¦ï¼å¦ææä»¬æ³è®© case 3 å case 5 æ§è¡åæ ·ç代ç ï¼
let a = 3;
switch (a) {
case 4:
alert('Right!');
break;
case 3: // (*) ä¸é¢è¿ä¸¤ä¸ª case 被åå¨ä¸ç»
case 5:
alert('Wrong!');
alert("Why don't you take a math class?");
break;
default:
alert('The result is strange. Really.');
}
ç°å¨ 3 å 5 齿¾ç¤ºç¸åçä¿¡æ¯ã
switch/case æéè¿ case è¿è¡âåç»âçè½åï¼å
¶å®æ¯ switch è¯å¥æ²¡æ break æ¶çå¯ä½ç¨ãå 为没æ breakï¼case 3 ä¼ä» (*) è¡æ§è¡å° case 5ã
ç±»åå¾å ³é®
强è°ä¸ä¸ï¼è¿éçç¸çæ¯ä¸¥æ ¼ç¸çã被æ¯è¾çå¼å¿ é¡»æ¯ç¸åçç±»åæè½è¿è¡å¹é ã
æ¯å¦ï¼æä»¬æ¥çä¸é¢ç代ç ï¼
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' )
}
- å¨
promptå¯¹è¯æ¡è¾å ¥0ã1ï¼ç¬¬ä¸ä¸ªalertå¼¹åºã - è¾å
¥
2ï¼ç¬¬äºä¸ªalertå¼¹åºã - 使¯è¾å
¥
3ï¼å 为promptçç»ææ¯å符串类åç"3"ï¼ä¸ä¸¥æ ¼ç¸ç===äºæ°åç±»åç3ï¼æä»¥case 3ä¸ä¼æ§è¡ï¼å æ¤case 3é¨åæ¯ä¸æ®µæ æä»£ç ãæä»¥ä¼æ§è¡default忝ã
è¯è®º
<code>æ ç¾æå ¥åªæå 个è¯ç代ç ï¼æå ¥å¤è¡ä»£ç å¯ä»¥ä½¿ç¨<pre>æ ç¾ï¼å¯¹äºè¶ è¿ 10 è¡ç代ç ï¼å»ºè®®ä½ ä½¿ç¨æ²ç®±ï¼plnkrï¼JSBinï¼codepenâ¦ï¼