首页 > 解决方案 > 测试变量的开关和测试语句的开关之间的区别

问题描述

var age = 16;

switch (true) {
  case age < 16:
    console.log("is a boy, he only drinks juice");
    break;
  case age >= 16 && age <= 20:
    console.log("he can drink beer now ");
    break;
  default:
    console.log("This is not working");
}

var age = 13;

switch (age) {
  case age < 16:
    console.log("is a boy, he only drinks juice");
    break;
  case age >= 16 && age <= 20:
    console.log("he can drink beer now ");
    break;
  default:
    console.log("This is not working");
}

为什么第二个开关不起作用?第一个有效,如何使第二个开关有效?

标签: javascript

解决方案


switch-case比较表达式中产生的值与定义为 case 的值之间的相等性。

在您的第一条语句中,表达式是true您要比较的值,因此情况应该是case trueand case false。在你写'age> = 16'等的代码中......这些实际上是真或假的值,因此switch可以将 中的值与cases.

在您的第二个语句中,您尝试将age哪个是整数与 的情况进行比较booleans,因此不会遇到任何情况。

在您的情况下,switch-case声明不适合您的提议(您可以使用if-else


推荐阅读