Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/461.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 开关箱不带';t工作_Javascript_Switch Statement - Fatal编程技术网

Javascript 开关箱不带';t工作

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");

我的问题是我想滚动到指定的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");
      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傻瓜