Switch语句在JavaScript中无法正常工作
我有下面的代码。出于某种原因,我不想执行的case语句(第二个用于案例“2”)正在执行正确的语句(案例“4”)。在线阅读后,似乎大多数ppl都能通过添加“中断”声明来解决类似问题。然而,这对我不起作用。请告知。以下输出来自我的浏览器Switch语句在JavaScript中无法正常工作,javascript,switch-statement,Javascript,Switch Statement,我有下面的代码。出于某种原因,我不想执行的case语句(第二个用于案例“2”)正在执行正确的语句(案例“4”)。在线阅读后,似乎大多数ppl都能通过添加“中断”声明来解决类似问题。然而,这对我不起作用。请告知。以下输出来自我的浏览器 var chk='4' 开关(chk){ 案例“4”: 变量位置=[ [“936001鲟鱼湾”,44.8358,-87.3305,“LRA”,1], [“936087_SHADOW_LAKE”,45.2183,-88.5981,“上帝抵抗军”,2], [“9361
var chk='4'
开关(chk){
案例“4”:
变量位置=[
[“936001鲟鱼湾”,44.8358,-87.3305,“LRA”,1],
[“936087_SHADOW_LAKE”,45.2183,-88.5981,“上帝抵抗军”,2],
[“936136_猪”,44.5925,-88.0808,“OMS”,3],
[“936136_猪”,44.5925,-88.0808,“OMS”,4]
];
var map=new google.maps.map(document.getElementById('map'){
缩放:15,
中心:新的google.maps.LatLng(位置[0][1],位置[0][2]),
mapTypeId:google.maps.mapTypeId.ROADMAP
});
var infowindow=new google.maps.infowindow({
最大宽度:400000
});
变量位置\所有\单元1=位置;
var标记,i;
对于(i=0;i来自:
switch语句首先计算其表达式。然后,它查找第一个case子句,该子句的表达式的计算结果与输入表达式的结果的值相同(使用严格比较,==),并将控制转移到该子句,执行相关语句
开关执行严格的检查,与'4'
(字符串)和4
(数字)不匹配。因此,您需要更改代码,如:
var chk = '4';
更新
如果您的浏览器确实正确加载了它,比如chk='4'
,那么它应该可以工作。请看这里:
var chk='4';
//添加此项以供检查。
变量类型1='OMS';
开关(chk){
案例“4”:
开关(类型1){
案例“OMS”:
text=“4-OMS”;
打破
“上帝抵抗军”案:
text=“4-LRA”;
打破
案例“UPSAVE”:
text=“4-向上保存”;
}
打破
案例“2”:
//######在这里做些事情##
打破
违约:
text=“期待周末”;
}
console.log(文本)在朋友的帮助下,我终于解决了我的问题。事实证明Javascript不喜欢case语句中未初始化的变量。在其中一个case语句中,我使用了一个变量,在此之前,我根据一些逻辑为该变量赋值。即使这个case语句没有被评估为“true”,我的程序还是抛出了一个错误
例如,在下面的代码中,如果b为空/null,即使m为“false”,程序也会在n和m情况下出错:
您尚未定义类型1
!我肯定,这不会发生在案例2中。。。或者,如果它真的去了,则使chk='4'代码>作为字符串。在上面的代码中,只有默认分支将被执行(案例“2”和案例“4”都不会执行),因为您的案例都不匹配4
。请注意,4!='4'
@Paulpro开关是否执行严格检查?@PraveenKumar是的,看看我五年前在StackOverflow上问的第四个问题haha@Paulpro天哪,你真是个名人@ssharma如果你的浏览器的代码确实是chk='4'
,那么它肯定能正常工作。你能发正确的密码吗?所以我真的明白了
switch(expression) {
case n:
break;
case m:
Var a=b;
break;
default:
default code block
}