Javascript 开关箱不带';t工作
我的问题是我想滚动到指定的div(#morg、#vorm、#nachm、#abe),它总是转到默认语句 为什么Javascript 开关箱不带';t工作,javascript,switch-statement,Javascript,Switch Statement,我的问题是我想滚动到指定的div(#morg、#vorm、#nachm、#abe),它总是转到默认语句 为什么 function scrollToCarret(listview) { var hour = new Date(); var hours = hour.getHours(); console.log(listview + hours); switch(hours) { case hours < "8": console.log("< 8");
function scrollToCarret(listview) {
var hour = new Date();
var hours = hour.getHours();
console.log(listview + hours);
switch(hours) {
case hours < "8":
console.log("< 8");
break;
case hours < "13":
console.log("< 13");
break;
case hours < "18":
console.log("< 18");
break;
case hours < "24":
console.log("< 24");
break;
default:
console.log("faiL");
}
}
函数scrollToCarret(listview){
var hour=新日期();
var hours=hour.getHours();
console.log(列表视图+小时);
开关(小时){
病例时数<“8”:
控制台日志(“<8”);
打破
病例时数<“13”:
控制台日志(“<13”);
打破
病例时数<“18”:
控制台日志(“<18”);
打破
病例时数<“24”:
控制台日志(“<24”);
打破
违约:
控制台日志(“失败”);
}
}
谢谢仅用于与选择器相等
在代码中,选择器是每个逻辑表达式的结果。如果我们假设小时数=8,则以下几行是相同的:
case hours < 8:
case (hours < "8"):
case (8 < "8"):
case false:
病例时数<8:
案例(小时数<“8”):
案例(8<“8”):
案例错误:
仅用于与选择器相等
在代码中,选择器是每个逻辑表达式的结果。如果我们假设小时数=8,则以下几行是相同的:
case hours < 8:
case (hours < "8"):
case (8 < "8"):
case false:
病例时数<8:
案例(小时数<“8”):
案例(8<“8”):
案例错误:
JavaScript中的
开关
/大小写
不是这样工作的。它总是测试每个案例是否相等
它所做的是将条件(hours<“18”
等)转换为布尔值,因为它要求每个案例都有一个标量值。然后将hours
的值与案例中的每个值进行比较。由于找不到匹配的值(因为它们是true
和false
),因此它会跳转到default
基本上运行的是以下内容:
if (hours == (hours < "8") {
...
} else if (hours == (hours < "13") {
...
} else if (hours == (hours < "18") {
...
} else if (hours == (hours < "24") {
...
}
if(小时==(小时<“8”){
...
}否则如果(小时==(小时<“13”){
...
}否则如果(小时==(小时<“18”){
...
}否则如果(小时==(小时<“24”){
...
}
将每个案例
与您在开关
中给出的表达式进行比较,在本例中为小时
是的,我有时也很想念VB的选择Case
。但是类C语言通常没有类似的东西(PowerShell有;-)。开关/Case
不是这样工作的。它总是测试每个Case
的相等性
它所做的是将条件(hours
“18”
,等等)转换为布尔值,因为它要求每个案例
都有一个标量值。然后将hours
的值与案例
中的每个值进行比较。因为找不到匹配的值(因为它们是true
和false
)它跳转到默认值
基本上运行的是以下内容:
if (hours == (hours < "8") {
...
} else if (hours == (hours < "13") {
...
} else if (hours == (hours < "18") {
...
} else if (hours == (hours < "24") {
...
}
if(小时==(小时<“8”){
...
}否则如果(小时==(小时<“13”){
...
}否则如果(小时==(小时<“18”){
...
}否则如果(小时==(小时<“24”){
...
}
将每个案例
与您在开关
中给出的表达式进行比较,在本例中为小时
是的,我有时也很怀念VB的Select Case
。但是类C语言通常没有类似的东西(PowerShell有;-)。switch
语句通过比较第一个表达式(switch
关键字后面的表达式)和Case
关键字后面的表达式来工作
因此,在您的代码中,您基本上是将小时数
(预期为整数)与小时数<“8”
(布尔值)进行比较,这可能会产生意外的结果
您要做的是改变:
switch (hours) {
case hours < "8":
...
case hours < "13":
...
case hours < "18":
...
case hours < "24":
...
default:
...
}
开关(小时){
病例时数<“8”:
...
病例时数<“13”:
...
病例时数<“18”:
...
病例时数<“24”:
...
违约:
...
}
致:
if(小时<8){
...
}否则,如果(小时数<13){
...
}否则,如果(小时数<18){
...
}否则,如果(小时<24小时){
...
}否则{
...
}
switch
语句通过比较第一个表达式(switch关键字后面的表达式)和case
关键字后面的表达式来工作
因此,在您的代码中,您基本上是将小时数
(预期为整数)与小时数<“8”
(布尔值)进行比较,这可能会产生意外的结果
您要做的是改变:
switch (hours) {
case hours < "8":
...
case hours < "13":
...
case hours < "18":
...
case hours < "24":
...
default:
...
}
开关(小时){
病例时数<“8”:
...
病例时数<“13”:
...
病例时数<“18”:
...
病例时数<“24”:
...
违约:
...
}
致:
if(小时<8){
...
}否则,如果(小时数<13){
...
}否则,如果(小时数<18){
...
}否则,如果(小时<24小时){
...
}否则{
...
}
点击开关时小时数等于多少?点击开关时小时数等于多少?请不要参考W3傻瓜请不要参考W3傻瓜