javascript - Switch 语句比较用户输入 Javascript

标签 javascript switch-statement user-input

我正在尝试这个简单的代码,似乎用户的输入没有经过所有比较并立即跳转到默认值。我猜 JS 正在将用户的输入作为字符串来代替。我确实尝试过 parseInt() 但没有成功。这是我的代码;

var number = prompt('What\'s your favority number?');

switch(number){
    case (number < 10):
        console.log('Your number is to small.');
        break;        
    case (number < 100):
        console.log('At least you\'re in the double digits.');
        break;
    case (number < 1000):
        console.log('Looks like you\'re in three digits.');
        break;
    default:
        console.log('Looks like you\'re in the fouth digits.');
}

最佳答案

使用true作为开关的表达式

The switch statement evaluates an expression, matching the expression's value to a case clause, and executes statements associated with that case.[Ref]

switch 语句首先计算其表达式。然后它会查找第一个 case 子句,其表达式的计算结果与输入表达式的结果相同(使用严格比较,===),并将控制权转移到该子句,执行关联的语句。 (如果多个案例与提供的值匹配,则选择第一个匹配的案例,即使这些案例彼此不相等。)。如果未找到匹配的 case 子句,程序将查找可选的 default 子句,如果找到,则将控制转移到该子句,执行相关语句。

var number = prompt('What\'s your favority number?');
number = Number(number); //Use `Number` to cast it as a number
switch (true) {
  //----^^^^
  case (number < 10):
    console.log('Your number is to small.');
    break;
  case (number < 100):
    console.log('At least you\'re in the double digits.');
    break;
  case (number < 1000):
    console.log('Looks like you\'re in three digits.');
    break;
  default:
    console.log('Looks like you\'re in the fouth digits.');
}
<script src="http://gh-canon.github.io/stack-snippet-console/console.min.js"></script>

编辑:根据 @bergi 的建议在评论中,if/else 级联是解决此问题的最佳方法。

var number = prompt('What\'s your favority number?');
number = Number(number); //Use `Number` to cast it as a number
if (number < 10)
  console.log('Your number is to small.');
else if (number < 100)
  console.log('At least you\'re in the double digits.');
else if (number < 1000)
  console.log('Looks like you\'re in three digits.');
else
  console.log('Looks like you\'re in the fouth digits.');

关于javascript - Switch 语句比较用户输入 Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36685935/

相关文章:

java - 如何在 Java Swing Gui 中存储用户输入的变量以供进一步使用?

java - 递归地反转字符串

c - 开关盒 0 : entering 0 and entering a letter

无法继续进行 switch case C 编程

c - 在 C 中接受来自命令行的输入

javascript - 如何从作为 AJAX 调用回调执行的 js.erb 触发 JS 函数?

tcl "switch -glob"与变量不匹配

javascript - 将回调函数和参数传递给 javascript 函数

javascript - 如何在 HTML 中使用 Js Controller 中的变量

javascript - 增加 Chart.js 中悬停时显示的标签的字体大小