Switch语句比较用户输入的Javascript
Switch statement compare user input Javascript
我正在尝试这个简单的代码,用户的输入似乎没有经过所有的比较,而是立即跳到默认的代码。我猜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
作为开关的expression
。
switch语句计算表达式,将表达式的值与case子句相匹配,并执行与该case关联的语句。【参考】
switch语句首先计算其表达式。然后,它查找第一个case子句,该子句的表达式计算结果与输入表达式的结果值相同(使用严格比较===
),并将控制权转移到该子句,执行相关联的语句。(如果多个事例与提供的值匹配,则会选择第一个匹配的事例,即使这些事例彼此不相等。)。如果找不到匹配的事例子句,则程序会查找可选的默认子句,如果找到,则会将控制权转移到该子句,执行关联的语句
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.');
您不了解switch语句是如何工作的。它不是检查动态值的快捷方式。这是检查已知值的快捷方式。
每个事例都是一个语句,它被评估为一个值。如果你查看这些文档,你会发现它们有case: value
,而不是你正在尝试的case: (expression)
。所以,它将把你所有的表达式转化为值。
例如,您的第一个案例是:
case (number < 10):
但真正的情况是:
case false:
当然,没有数字会评估为false
(从技术上讲,0
是一个伪值,但交换机使用===
比较,而不是==
,所以0 === false // false
)。因此,你所有的案例都是case false
,所以开关通过所有案例,落在default
案例上。
因此,对于您的情况,switch语句是不合适的。您应该使用if语句。
if(number < 10) {
} else if(number < 100) {
} else if(number < 1000) {
} else {
}
只有当您知道以下值时,switch语句才适用:
switch(number) {
case 10:
break;
case 100:
break;
case 1000:
break;
default:
}
(是的,使用parseInt
来确保您有整数。)
- 我怎样才能得到“__类型“;用javascript输入json
- 如何获取javascript输入并在html中调用它
- JavaScript - 输入按钮隐藏 - 不起作用
- 选中复选框时启用Javascript输入类型,未选中复选框则禁用
- JavaScript-输入不是数字时提示
- Javascript:输入框-自动大写第一个字母,但可以重写
- Javascript输入格式
- 来自键盘的JavaScript输入没有“prompt()”方法弹出窗口(如Pascal Readln或GWiBasic输
- JavaScript 输入值问题
- Javascript输入更改
- Javascript输入问题
- JavaScript 输入字段不可编辑
- 动态生成的 Javascript 输入字段无法被 Httpservletrequest 识别???仅在 Chrome 中
- JavaScript 输入标签未设置 ID 或类
- JavaScript 输入字段验证
- 如何使用 javascript 输入 2 个框
- 直接从Javascript输入/传递图像到输入类型=“文件名”
- 如何显示双引号以通过javascript输入
- HTML5/Javascript 输入只读状态在 IOS 上使用 XCode 滑动
- Javascript 输入到 HTML 表单 onSubmit 与 # 操作到 PHP $_GET(同一文件上的所有代码