好的,看来这个switch语句永远注定是行不通的。
最初的想法是创建一个提示变量x,用户必须选择输入任意数字,该数字就是x的值。
然后在开关的第一种情况下,如果x小于0.5,则它将简单地console.log“ less”。 如果x大于0.5,它将只是console.log“ more”。 如果由于某种原因程序无法按预期运行,则默认值为console.log“这是默认值”
然后我最后添加了一个x的console.log,只是想知道用户输入了什么数字。
尝试一下!
我反复尝试,无论我输入什么数字,始终打印“这是默认值”。然后打印x的值。
我最终选择了Rambo并删除了提示,并声明x为0.6。它应该打印“更多”,但仍然不会。
var x = 0.6;
switch (x) {
case x < 0.5:
console.log("less");
break;
case x > 0.5:
console.log("more");
break;
default:
console.log("its the dflt");
};
console.log(x);
所以我想知道这段代码有什么问题。帮助
答案 0 :(得分:5)
switch
将您switch
与case
进行比较。因此,如果您要运行case x < 0.5:
,则如果您针对switched
的表达式为true
,则该情况将运行:
var x = 0.6;
switch (true) {
case x < 0.5:
console.log("less");
break;
case x > 0.5:
console.log("more");
break;
default:
console.log("its the dflt");
};
console.log(x);
如果您针对switch
本身x
,则case
仅在案例的评估结果与x
相同,即{{1 }},例如:
0.6
但这根本不够灵活,不是您想要的。
我个人更喜欢var x = 0.6;
switch (x) {
case 0.6:
console.log('x is exactly 0.6');
break;
default:
console.log("x is something other than 0.6");
};
console.log(x);
/ if
,它更容易阅读(而且,正如评论中指出的那样,速度更快):
else
答案 1 :(得分:0)
Switch将x
的值与案例的值进行比较。在您的代码中,x < 0.5
的值为true
。开关案例不比较if语句那样的情况,而是比较x
和true
。由于x
是一个数字,x
永远不会等于true
,因此始终采用默认大小写。
在这种情况下,我将使用if语句代替开关。开关更适合枚举(检查x
是否是一组值中的特定值,而不是值的范围)
答案 2 :(得分:0)
CertainPerformance已经很好地回答了您的问题,但是,如果您仍然不了解如何使用switch,我建议您使用“ if语句”,直到您有时间阅读有关使用switch的更多信息为止。
Config::set('kendo.totalCount', $this->count)
希望这对您来说更容易:)