【发布时间】:2019-07-30 10:15:55
【问题描述】:
//JavaScript:
function concatArrays() {
var recentlyCompleted = ["rc1", "rc2"];
var upcomingActivities = [];
var decisionsRequired = [];
var records = [];
switch(true) {
case (recentlyCompleted.length >0):
records.concat(recentlyCompleted);
console.log("recentlyCompleted.length >0");
console.log(records);
case (upcomingActivities.length >0):
records.concat(upcomingActivities);
console.log("upcomingActivities.length >0");
console.log(records);
case (decisionsRequired.length >0):
records.concat(decisionsRequired);
console.log("decisionsRequired.length >0");
console.log(records);
break;
}
document.getElementById("demo").innerHTML = JSON.stringify(records);
var records2 = recentlyCompleted.concat(upcomingActivities).concat(decisionsRequired);
document.getElementById("demo2").innerHTML = JSON.stringify(records2);
}
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>switch(true)</title>
</head>
<body>
<p>Click the button to join arrays.</p>
<button onclick="concatArrays()">Try it</button>
<p id="demo"></p>
<p id="demo2"></p>
</body>
对不起,我已经读过,与明显的 if else if 序列相比的主要优势是能够省略 break 语句并执行多个块。我想在我的 case(true) 代码中执行多个块。但我发现这个简单的代码有问题。
非常抱歉,您能否用 switch(true) 解释这段代码的部分问题 谢谢!
function concatArrays() {
var recentlyCompleted = ["rc1", "rc2"];
var upcomingActivities = [];
var decisionsRequired = [];
var records = [];
switch (true) {
case (recentlyCompleted.length > 0):
records = records.concat(recentlyCompleted);
console.log("recentlyCompleted.length >0");
console.log(records);
case (upcomingActivities.length > 0):
records = records.concat(upcomingActivities);
console.log("upcomingActivities.length >0");
console.log(records);
case (decisionsRequired.length > 0):
records = records.concat(decisionsRequired);
console.log("decisionsRequired.length >0");
console.log(records);
break;
}
document.getElementById("demo").innerHTML =
JSON.stringify(records);
var records2 = recentlyCompleted
.concat(upcomingActivities)
.concat(decisionsRequired);
document.getElementById("demo2").innerHTML =
JSON.stringify(records2);
}
【问题讨论】:
-
switch: "switch 语句首先计算它的表达式。然后它查找第一个 case 子句,其表达式的计算结果与输入表达式的结果相同(使用严格的比较,===) 并将控制转移到该子句,执行相关的语句。(如果多个案例与提供的值匹配,则选择第一个匹配的案例,即使案例不相等.)" -
在 Switch 中只允许相等的条件。否则使用 IF 语句。
标签: javascript arrays concat