Baseline Widely available
switch
è¯å¥ä¼å¯¹è¡¨è¾¾å¼è¿è¡æ±å¼ï¼å¹¶å°è¡¨è¾¾å¼çå¼ä¸ä¸ç³»å case
åå¥è¿è¡å¹é
ï¼ä¸æ¦éå°ä¸è¡¨è¾¾å¼å¼ç¸å¹é
ç第ä¸ä¸ª case
åå¥åï¼å°æ§è¡è¯¥åå¥åé¢çè¯å¥ï¼ç´å°éå° break
è¯å¥ä¸ºæ¢ãè¥æ²¡æ case
åå¥ä¸è¡¨è¾¾å¼çå¼å¹é
ï¼åä¼è·³è½¬è³ switch
è¯å¥ç default
å奿§è¡ã
const expr = "Papayas";
switch (expr) {
case "Oranges":
console.log("Oranges are $0.59 a pound.");
break;
case "Mangoes":
case "Papayas":
console.log("Mangoes and papayas are $2.79 a pound.");
// Expected output: "Mangoes and papayas are $2.79 a pound."
break;
default:
console.log(`Sorry, we are out of ${expr}.`);
}
è¯æ³
switch (expression) {
case caseExpression1:
statements
case caseExpression2:
statements
// â¦
case caseExpressionN:
statements
default:
statements
}
expression
ç»æå°ä¸æ¯ä¸ª case
åå¥è¿è¡å¹é
çä¸ä¸ªè¡¨è¾¾å¼ã
case caseExpressionN
å¯é
case
åå¥ç¨äºä¸ expression
è¿è¡å¹é
ã妿 expression
çå¼ä¸ä»»ä½ caseExpressionN
çå¼å¹é
ï¼åä»è¯¥ case
åå¥ä¹åç第ä¸ä¸ªè¯å¥å¼å§æ§è¡ï¼ç´å°éå° switch
è¯å¥ç»ææé¦ä¸ª break
è¯å¥ä¸ºæ¢ã
default
å¯é
default
åå¥ï¼å¦æåå¨ï¼åå½ expression
çå¼ä¸ä»»ä½ case
å¥é½ä¸å¹é
æ¶ï¼ä¼æ§è¡æ¤åå¥ãä¸ä¸ª switch
è¯å¥åªè½æä¸ä¸ª default
åå¥ã
switch
è¯å¥é¦å
对å
¶è¡¨è¾¾å¼è¿è¡æ±å¼ãç¶åï¼å®ä¼æ¥æ¾ç¬¬ä¸ä¸ªcase
åå¥ï¼è¯¥åå¥çè¡¨è¾¾å¼æ±å¼ç»æä¸è¾å
¥è¡¨è¾¾å¼çç»æç¸åï¼éè¿ä¸¥æ ¼ç¸çæ¯è¾ï¼ ï¼å¹¶å°æ§å¶æè½¬ç§»å°è¯¥åå¥ï¼æ§è¡è¯¥åå¥ä¹åçææè¯å¥ã
ä»
å½å¿
è¦æ¶æä¼å¯¹åå¥è¡¨è¾¾å¼è¿è¡æ±å¼ââå¦æå·²ç»æ¾å°äºå¹é
项ï¼ååç»ç case
åå¥è¡¨è¾¾å¼å°ä¸åè¿è¡æ±å¼ï¼å³ä½¿å®ä»¬å¯è½ä¼å è·³åºåç©¿éæºå¶è被æ§è¡å°ã
switch (undefined) {
case console.log(1):
case console.log(2):
}
// ä»
è¾åº 1
è¥æ¾ä¸å°å¹é
ç case
åå¥ï¼ç¨åºä¼æ¥æ¾å¯éç default
åå¥ï¼å¦ææ¾å°ï¼åå°æ§å¶æè½¬ç§»å°è¯¥åå¥ï¼å¹¶æ§è¡è¯¥åå¥åé¢çè¯å¥ã妿æ¾ä¸å° default
åå¥ï¼ç¨åºå°ç»§ç»æ§è¡ switch
ç»æåçè¯å¥ãæç
§æ¯ä¾ï¼default
åå¥é常ä½äºæåä¸ä¸ªä½ç½®ï¼ä½å®é
ä¸å¹¶ä¸å¼ºå¶è¦æ±å¦æ¤ãä¸ä¸ª switch
è¯å¥åªè½æä¸ä¸ª default
åå¥ï¼å¤ä¸ª default
åå¥ä¼å¯¼è´ SyntaxError
é误ã
ä½ å¯ä»¥å¨ switch
è¯å¥ä½å
é¨ä½¿ç¨ break
è¯å¥æåè·³åºï¼é常æ¯å¨æ§è¡å®ä¸¤ä¸ª case
åå¥ä¹é´çææè¯å¥åãæ§è¡ä¼ä» switch
è¯å¥åçç¬¬ä¸æ¡è¯å¥ç»§ç»è¿è¡ã
妿çç¥äº break
è¯å¥ï¼ç¨åºæ§è¡å°ä¼ç»§ç»æµåä¸ä¸ä¸ª case
åå¥ï¼çè³å°è¾¾ default
åå¥ï¼èä¸è®ºè¯¥åå¥ä¸ç表达å¼å¼æ¯å¦å¹é
ãè¿ç§è¡ä¸ºè¢«ç§°ä¸ºâç©¿éï¼fall-throughï¼âã
const foo = 0;
switch (foo) {
case -1:
console.log("è´ 1");
break;
case 0: // foo çå¼å¹é
è¿ä¸ªæ¡ä»¶ï¼æ§è¡ä»è¿éå¼å§
console.log(0);
// å¿è®°äº breakï¼æ§è¡ç©¿é
case 1: // 'case 0:' 䏿²¡æ break è¯å¥ï¼æä»¥è¿ä¸ª case ä¹ä¼æ§è¡
console.log(1);
break; // éå° breakï¼ä¸ä¼ç»§ç»å° 'case 2:'
case 2:
console.log(2);
break;
default:
console.log("default");
}
// è¾åº 0 å 1
å¨åéçä¸ä¸æä¸ï¼å
¶ä»æ§å¶æµè¯å¥åæ ·å
·æè·³åº switch
è¯å¥çææãä¾å¦ï¼å¦æ switch
è¯å¥åµå¥å¨ä¸ä¸ªå½æ°å
é¨ï¼é£ä¹ return
è¯å¥å°ç»æå½æ°ä½çæ§è¡ï¼å æ¤ä¹ä¼ç»æ switch
è¯å¥çæ§è¡ã妿 switch
è¯å¥ä½äºå¾ªç¯ä½å
ï¼é£ä¹ continue
è¯å¥ä¼åæ¢ switch
è¯å¥çæ§è¡ï¼å¹¶è·³è½¬å°å¾ªç¯ä½çä¸ä¸æ¬¡è¿ä»£ã
case
å default
åå¥ç±»ä¼¼äºæ è®°è¯å¥ï¼å®ä»¬æç¤ºäºæ§å¶æµå¯è½è·³è½¬å°çä½ç½®ãç¶èï¼å®ä»¬æ¬èº«å¹¶ä¸åå»ºè¯æ³ä½ç¨åï¼ä¹ä¸ä¼èªå¨è·³åºââå¦ä¸æè¿°æç¤ºï¼ãä¾å¦ï¼
const action = "è¯´ä½ å¥½";
switch (action) {
case "è¯´ä½ å¥½":
const message = "ä½ å¥½";
console.log(message);
break;
case "说å¿":
const message = "å¿";
console.log(message);
break;
default:
console.log("action ç声æä¸ºç©ºã");
}
æ¤ç¤ºä¾å°æåºé误âUncaught SyntaxError: Identifier 'message' has already been declaredâï¼å 为第ä¸ä¸ª const message = 'ä½ å¥½';
声æä¸ç¬¬äºä¸ª const message = 'å¿';
声æåçäºå²çªï¼å³ä½¿å®ä»¬åå«ä½äºåèªç case åå¥å
ã仿 ¹æ¬ä¸è¯´ï¼è¿æ¯å 为两个 const
声æé½å¨åä¸ä¸ªç± switch
è¯å¥ä½æå建çåä½ç¨åå
ã
è¦ä¿®å¤è¿ä¸ªé®é¢ï¼å½ä½ éè¦å¨ case
åå¥ä¸ä½¿ç¨ let
æ const
å£°ææ¶ï¼è¯·å°å
¶å
裹å¨ä¸ä¸ªä»£ç åä¸ã
const action = "è¯´ä½ å¥½";
switch (action) {
case "è¯´ä½ å¥½": {
const message = "ä½ å¥½";
console.log(message);
break;
}
case "说å¿": {
const message = "å¿";
console.log(message);
break;
}
default: {
console.log("action ç声æä¸ºç©ºã");
}
}
ç°å¨ï¼è¿æ®µä»£ç å°æ£å¸¸å¨æ§å¶å°è¾åº ä½ å¥½
ï¼ä¸ä¼ååºç°ä»»ä½é误ã
å¨ä»¥ä¸ç¤ºä¾ä¸ï¼å¦æ expr
ç计ç®ç»æä¸º é¦è
ï¼åç¨åºä¼å°å
¶å¼ä¸ case 'é¦è'
åå¥è¿è¡å¹é
ï¼å¹¶æ§è¡ç¸åºçè¯å¥ãå½éå° break
å
³é®åæ¶ï¼ç¨åºä¼è·³åº switch
è¯å¥ï¼å¹¶æ§è¡ç´§éå
¶åç switch
è¯å¥ã妿çç¥äº break
ï¼å case '樱æ¡'
çè¯å¥ä¹ä¼è¢«æ§è¡ã
switch (expr) {
case "æ©å":
console.log("æ©åæ¯ç£
$0.59 ç¾å
ã");
break;
case "è¹æ":
console.log("è¹ææ¯ç£
$0.32 ç¾å
ã");
break;
case "é¦è":
console.log("é¦èæ¯ç£
$0.48 ç¾å
ã");
break;
case "樱æ¡":
console.log("æ¨±æ¡æ¯ç£
$3.00 ç¾å
ã");
break;
case "èæ":
case "æ¨ç":
console.log("èæåæ¨çæ¯ç£
$2.79 ç¾å
ã");
break;
default:
console.log(`æ±æï¼æä»¬æ²¡æ ${expr} äºã`);
}
console.log("ä½ è¿éè¦ä»ä¹åï¼");
å° default åå¥ç½®äºä¸¤ä¸ª case åå¥ä¹é´
å¦ææ²¡ææ¾å°å¹é
项ï¼å°ä» default
åå¥å¼å§æ§è¡ï¼å¹¶æ§è¡è¯¥åå¥ä¹åçææè¯å¥ã
const foo = 5;
switch (foo) {
case 2:
console.log(2);
break; // ç±äºéå°äº breakï¼å æ¤ä¸ä¼ç»§ç»æ§è¡ 'default:'
default:
console.log("default");
// ç©¿é
case 1:
console.log("1");
}
å³ä½¿å° default
å奿¾å¨ææå
¶ä» case
åå¥ä¹åä¹å¯ä»¥å®ç°ç¸åçææã
è¿ç§æ¹æ³å©ç¨äºè¿æ ·ä¸ä¸ªäºå®ï¼å¦æå¨æä¸ª case
åå¥ä¸æ¹æ²¡æ break
è¯å¥ï¼é£ä¹æ 论该 case
å奿¯å¦æ»¡è¶³æ¡ä»¶ï¼ç¨åºé½ä¼ç»§ç»æ§è¡ä¸ä¸ä¸ª case
åå¥ã
以䏿¯ä¸ä¸ªåæä½è¿ç» case
è¯å¥ç示ä¾ï¼å
¶ä¸å个ä¸åç弿§è¡å®å
¨ç¸åçæä½ã
const Animal = "é¿é¢é¹¿";
switch (Animal) {
case "奶ç":
case "é¿é¢é¹¿":
case "ç":
case "çª":
console.log("è¿ç±»å¨ç©æ²¡æçç»ã");
break;
case "æé¾":
default:
console.log("è¿ç±»å¨ç©å·²ç»çç»ã");
}
以䏿¯ä¸ä¸ªæ¶åå¤ä¸ªæä½çè¿ç» case
åå¥ç¤ºä¾ï¼æ ¹æ®æä¾çæ´æ°å¼ï¼å¯ä»¥è·å¾ä¸åçè¾åºç»æãè¿è¡¨æ case
åå¥å°ä¼æç
§ä½ ç¼åæ¶ç顺åºä¾æ¬¡æ§è¡ï¼èä¸å¿
æç
§æ°å¼ç大å°é¡ºåºãå¨ JavaScript ä¸ï¼è¿äº case
è¯å¥ä¸çè³è¿å¯ä»¥æ··å
¥å符串类åçå®ä¹ã
const foo = 1;
let output = "è¾åºï¼";
switch (foo) {
case 0:
output += "æä»¥";
case 1:
output += "ä½ ç";
output += "åå";
case 2:
output += "å«";
case 3:
output += "ä»ä¹";
case 4:
output += "ï¼";
console.log(output);
break;
case 5:
output += "ï¼";
console.log(output);
break;
default:
console.log("è¯·ä» 0 å° 5 ä¸éæ©ä¸ä¸ªæ°åï¼");
}
æ¤ç¤ºä¾çè¾åºç»æï¼
å¼ è¾åºææ¬foo
æ¯ NaN
æä¸çäº 1
ã2
ã3
ã4
ã5
æ 0
è¯·ä» 0 å° 5 ä¸éæ©ä¸ä¸ªæ°åï¼ 0
è¾åºï¼æä»¥ä½ çååå«ä»ä¹ï¼ 1
è¾åºï¼ä½ çååå«ä»ä¹ï¼ 2
è¾åºï¼å«ä»ä¹ï¼ 3
è¾åºï¼ä»ä¹ï¼ 4
è¾åºï¼ï¼ 5
è¾åºï¼ï¼ ä¸ç§æ¿ä»£ if...else é¾çæ¹æ³
ä½ å¯è½ç»å¸¸ä¼éå°éè¦ä½¿ç¨ä¸ç³»å if...else
æ¡ä»¶å¤æçæ
åµã
if ("fetch" in globalThis) {
// ä½¿ç¨ fetch è·åèµæºã
} else if ("XMLHttpRequest" in globalThis) {
// ä½¿ç¨ XMLHttpRequest è·åèµæºã
} else {
// 使ç¨èªå®ä¹ AJAX é»è¾è·åèµæº
}
è¿ç§æ¨¡å¼å¹¶é卿§è¡ä¸ç³»å ===
ç弿¯è¾æä½ï¼ä½ä»ç¶å¯ä»¥å°å
¶è½¬æ¢ä¸º switch
ç»ææ¥å®ç°ã
switch (true) {
case "fetch" in globalThis:
// ä½¿ç¨ fetch è·åèµæºã
break;
case "XMLHttpRequest" in globalThis:
// ä½¿ç¨ XMLHttpRequest è·åèµæºã
break;
default:
// 使ç¨èªå®ä¹ AJAX é»è¾è·åèµæº
break;
}
switch (true)
模å¼ä½ä¸º if...else
ç»æçä¸ç§æ¿ä»£æ¹æ¡ï¼å¨å¸æå©ç¨ç©¿éè¡ä¸ºæ¶ç¹å«æç¨ã
switch (true) {
case isSquare(shape):
console.log("è¯¥å½¢ç¶æ¯ä¸ä¸ªæ£æ¹å½¢ã");
// 失败ï¼å ä¸ºæ£æ¹å½¢ä¹æ¯ç©å½¢çä¸ç§ï¼
case isRectangle(shape):
console.log("è¯¥å½¢ç¶æ¯ä¸ä¸ªç©å½¢ã");
case isQuadrilateral(shape):
console.log("è¯¥å½¢ç¶æ¯ä¸ä¸ªå边形ã");
break;
case isCircle(shape):
console.log("è¯¥å½¢ç¶æ¯ä¸ä¸ªåå½¢ã");
break;
}
è§è æµè§å¨å
¼å®¹æ§ åè§
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4