在JavaScript内,我最近正在尝试使用switch语句在for-in循环中完成一些参数检查,但发现该语法与使用JavaScript中的代码块的主题不太一致。>
我的示例数据如下:
var data = {
one: "hello",
two: "world"
}
我想象的switch语句看起来像是:
function isDataRoughlyMyExample(data) {
if (typeof data !== "object") {
return false;
}
let count = 0;
for (const name in data) {
count++;
switch (name) {
case "one", "two" {
if (typeof data[name] !== "string") {
return false;
}
}
default {
return false;
}
}
}
if (count === 0) {
return false;
} else {
return true;
}
}
然而,JavaScript似乎通过使代码块使用空格来提高代码的可读性来遵循python的一般主题
function isDataRoughlyMyExample(data) {
if (typeof data !== "object") {
return false;
}
let count = 0;
for (const name in data) {
count++;
stuff: switch (name) {
case "one":
case "two":
if (typeof data[name] !== "string") {
return false;
}
break stuff;
default:
return false;
}
}
if (count === 0) {
return false;
} else {
return true;
}
}
为澄清起见,我在问为什么switch语句以它们的方式工作。我知道由于JavaScript对向后兼容性的热爱,不太可能更改它,但确实使我感到困惑,为什么会这样。
答案 0 :(得分:0)
这也是switch在其他几种语言中的工作方式/外观(最值得注意的是C)。因此,添加这些代码块将增加混乱,而不是减少混乱。