这段Switch语句存在什么问题?为何实际输出与预期不符?
问题原因
你的代码里的switch语句每个case分支都缺少break关键字,导致贯穿执行——当匹配到某个case后,会继续执行后续所有case和default的代码,这就是实际输出和预期不符的原因。比如当i=1时,会依次打印"Gold Medal"、"Silver Medal"、"Bronze Medal"和1,而不是只打印"Gold Medal"。
修复后的代码
for (var i = 1; i <= 10; i++) { switch (i) { case 1: console.log("Gold Medal"); break; // 终止当前分支,跳出switch case 2: console.log("Silver Medal"); break; case 3: console.log("Bronze Medal"); break; default: console.log(i); } }
说明
break关键字的作用是在匹配到对应case并执行完代码后,立即跳出switch语句,避免执行后续的分支代码。- 由于
default是最后一个分支,后面没有其他代码,所以可以不用加break,但加上也不会有问题,风格更统一。
内容的提问来源于stack exchange,提问作者Mira
相关产品推荐
相关产品推荐

