Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用2个布尔变量配置switch case语句?_Javascript - Fatal编程技术网

Javascript 如何使用2个布尔变量配置switch case语句?

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

我是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 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时,它是副作用。