我有一个开关盒,尽管满足了适当的条件但没有注册任何东西。它们究竟是如何工作的?这是代码
sClasificacionIMC = ''
switch(nIMCDecimal){
case 'Bajo peso':
if(nIMCDecimal <18.50){
sClasificacionIMC = 'Bajo peso'
}
break;
case 'Delgadez severa':
if(nIMCDecimal <16.00){
sClasificacionIMC = 'Delgadez severa'
}
break;
case 'Delgadez moderada':
if(nIMCDecimal > 16.00 && nIMCDecimal < 16.99){
sClasificacionIMC = 'Delgadez moderada'
}
break;
case 'Delgadez leve':
if(nIMCDecimal > 17.00 && nIMCDecimal < 18.49 ){
sClasificacionIMC = 'Delgadez leve'
}
break;
case 'Normal':
if(nIMCDecimal > 18.5 && nIMCDecimal < 24.99){
sClasificacionIMC = 'Normal'
}
break;
case 'Sobrepeso':
if(nIMCDecimal >= 25.00){
sClasificacionIMC = 'Sobrepeso'
}
break;
case'Preobeso':
if(nIMCDecimal > 25.00 && nIMCDecimal < 29.99){
sClasificacionIMC = 'Preobeso'
}
break;
case 'Obesidad':
if(nIMCDecimal >= 30.00){
sClasificacionIMC = 'Obesidad'
}
break;
case 'Obesidad leve':
if(nIMCDecimal > 30.00 && nIMCDecimal < 34.99){
sClasificacionIMC = 'Obesidad leve'
}
break;
case 'Obesidad media':
if(nIMCDecimal > 35.00 && nIMCDecimal < 39.99){
sClasificacionIMC = 'Obesidad media'
}
break;
case 'Obesidad morbida':
if(nIMCDecimal >= 40.00){
sClasificacionIMC = 'Obesidad mórbida'
}
}
结果(sClasificacionIMC)设置为注册到一个数组中,但是一旦注册,它只显示一个空字段,尽管符合条件,但它不适用于任何情况。
也没有控制台错误。
我很困惑我是否应该在开关上使用nIMCDecimal(nIMCDecimal)或者我是否应该使用sClasificacionIMC
答案 0 :(得分:0)
switch语句首先计算其表达式。
然后查找第一个case子句,其表达式的计算结果与输入表达式的结果相同(使用严格比较,===),并将控制转移到该子句,执行相关的语句。
(如果多个案例与提供的值匹配,则选择匹配的第一个案例,即使案例彼此不相等。)
如果找不到匹配的case子句,程序将查找可选的default子句,如果找到,则将控制转移到该子句,执行相关的语句。
如果未找到default子句,程序将在切换结束后的语句处继续执行。按照惯例,default子句是最后一个子句,但不一定是这样。
答案 1 :(得分:0)
您应使用如下所示的switch
代替if/else if
语句:
sClasificacionIMC = ''
if(nIMCDecimal <18.50){sClasificacionIMC = 'Bajo peso'}
else if(nIMCDecimal <16.00){ sClasificacionIMC = 'Delgadez severa'}
等等。希望这会有所帮助。
答案 2 :(得分:0)
关闭!在这种情况下(以及其他类似的情况),尽量不要使用switch语句。在这里使用if else
更容易 。这是你的代码使用这些!
const f = function(nIMCDecimal){
sClasificacionIMC = ''
if(nIMCDecimal<18.50){
sClasificacionIMC = 'Bajo peso'
}else if(nIMCDecimal <16.00){
sClasificacionIMC = 'Delgadez severa'
}else if(nIMCDecimal > 16.00 && nIMCDecimal < 16.99){
sClasificacionIMC = 'Delgadez moderada'
}else if(nIMCDecimal > 17.00 && nIMCDecimal < 18.49){
sClasificacionIMC = 'Delgadez leve'
}else if(nIMCDecimal > 18.5 && nIMCDecimal < 24.99){
sClasificacionIMC = 'Normal'
}else if (nIMCDecimal >= 25.00){
sClasificacionIMC = 'Sobrepeso'
}else if(nIMCDecimal > 25.00 && nIMCDecimal < 29.99){
sClasificacionIMC = 'Preobeso'
}else if (nIMCDecimal >= 30.00){
sClasificacionIMC = 'Obesidad'
}else if (nIMCDecimal > 30.00 && nIMCDecimal < 34.99){
sClasificacionIMC = 'Obesidad leve'
}else if(nIMCDecimal > 35.00 && nIMCDecimal < 39.99){
sClasificacionIMC = 'Obesidad media'
}else if (nIMCDecimal >= 40.00){
sClasificacionIMC = 'Obesidad mórbida'
}
return sClasificacionIMC
}
console.log(f(2)) //Bajo peso