Javascript 如何使用2个布尔变量配置switch case语句?
我是JavaScript新手,尝试实现switch case语句,根据2个布尔变量的值组合输出4个选项中的一个。然而,javascript似乎忽略了第二个变量(adultCheck)。你能告诉我我做错了什么吗 谢谢大家!Javascript 如何使用2个布尔变量配置switch case语句?,javascript,Javascript,我是JavaScript新手,尝试实现switch case语句,根据2个布尔变量的值组合输出4个选项中的一个。然而,javascript似乎忽略了第二个变量(adultCheck)。你能告诉我我做错了什么吗 谢谢大家! let raceNumber = Math.floor(Math.random() * 1000); let earlyRegistry = false; let adultCheck = true; let runnerAge = 19; //determines if r
let raceNumber = Math.floor(Math.random() * 1000);
let earlyRegistry = false;
let adultCheck = true;
let runnerAge = 19;
//determines if runner is an adult or not
runnerAge > 18 ? adultCheck = true : adultCheck = false;
//assigns racenumber according to runner having registered early or not
earlyRegistry ? raceNumber += 1000 : raceNumber;
//below logs for checks only
console.log(earlyRegistry);
console.log(raceNumber);
console.log(runnerAge);
console.log(adultCheck);
//determines race start time according to runner being adult or not and if registered early or not
switch (earlyRegistry && adultCheck) {
case (true && true):
console.log(`Your race number ${raceNumber} will start at 09:30am`);
break;
case (false && true):
console.log(`Your race number ${raceNumber} will start at 11am`);
break;
case (true && false):
console.log(`Your race number ${raceNumber} will start at 12:30pm`);
break;
case (false && false):
console.log(`Your race number ${raceNumber} will start at 12:30pm`);
break;
default:
console.log('Invalid item');
break;
}
不建议滥用开关副作用 您的代码可以用更简单的方式编写 我使用一个三元,但可以使用嵌套的,但这更可读
let time=“12:30pm”;
如果(成人检查)时间=早期登记?“上午9:30”:“上午11点”;
log(`Your race number${race number}将从${time}`开始);
至于您的特定代码,@mplungjan给出了非常好的回答。我将只描述如何按自己的方式进行,这在复杂的场景中会很好,但在简单的情况下会增加开销
通常,您可以命名您的州,并使用开关打开所述名称。你将如何准确命名并不特别相关。例如,您可以这样做:
let状态;
if(earlyRegistry&&adultCheck)状态='early_成人';
如果(!earlyRegistry&&adultCheck)状态='late_成人';
if(earlyRegistry&!adultCheck)state='early_child';
如果(!earlyRegistry&&!adultCheck)state='late_child';
然后使用开关。这是非常可读和可用的,但它不实用,因此您可以将设置值替换为
状态
变量,以实际执行您想要执行的操作。您滥用了开关的副作用。不建议这样做。您是否有关于开关副作用的更多信息?开关用于测试值,因此,当您执行true&&true时,它是副作用。