javascript - Switch 语句输出 - JavaScript
问题描述
我有一个问题,我似乎无法理解为什么答案是这样的。问题是当 a 的值为 8 时,下面的代码片段会输出什么。
var n = ""
switch(a) {
case 8:
n += "bra ";
case 10:
n = "jon";
case 12:
n += "ny";
}
console.log(n);
我的第一个猜测是“bra”,因为由于 a=8,输入将匹配第一个 case 语句,因此将“bra”连接到 n。然而,该解决方案将“jonny”作为答案。
有人可以解释一下我在这里缺少什么吗?我将非常感谢。请注意,我是一个 js 初学者,所以我可能错过了一些琐碎的事情。
解决方案
一条switch
语句只是跳转到相应的case
标签。而已。
因此8
你得到:
switch(a) {
a
是8
,所以跳到case 8
。
case 8:
嘿,这是我们的站。在这里继续执行。
n += "bra ";
附加"bra "
到n
.
case 10:
另一个标签。执行标签什么都不做。
n = "jon";
设置n
为"jon"
。
case 12:
另一个标签。继续。
n += "ny";
附加"ny"
到n
.
}
现在n
是"jonny"
。
如果你想在 a 中停止执行switch
,你需要一个明确的break;
:
switch(a) {
case 8:
n += "bra ";
break;
case 10:
n = "jon";
break;
case 12:
n += "ny";
break; // technically redundant; this is the end of the switch block
}
这就是为什么您通常会在每组语句break
之后看到一个。case
顺便说一句,这种行为被称为“失败”并且是从 C 继承的。
推荐阅读
- android-studio - Gradle 同步失败:原因:尝试访问方法。将 gradle 2.3 更新到 4.0.1 后
- python - 使用字典 python 3.8 计算每个字符的频率
- vb.net - 使用列表框显示excel文件?
- node.js - 使用 knex.js 在数组中插入多个数据时检查数据是否存在
- python - Tensorflow 在验证集上的准确性非常低
- mule - 关于 Mulesoft 和 DataWeave 的问题
- sql - JPA - 确保没有预留与所需预留发生冲突
- reactjs - react-redux state undefined of props - 功能组件
- javascript - CKeditor 将光标放在开头
- php - 如何在 laravel 中使用 2 foreach