else if判断语句,在C语言中是这样描述的,否则语句总是与它最近的if语句相配的,
但是如果用{}改变了作用域之后,在C语言中就不一样了,比如:
1、if(a==1) {
2、}else if( b==2){
3、 if(c==3){}
4、}else if(d==10){
5、}
对于C语言,第3行的if(c==3){}与第4行的否则语句不相干,但是对于javascript就不一样了,因为它的{}不代表作用域的范围,
所以,第4行的else if(d==10){}仍然是与第3行的否则如果配对。
在实际工作中我也遇到了这样的问题,比如设置菜单的一小段程序:
开始像这样:
//-------------设置右键菜单--------------
//console.log(event.get("name"));
if (mapTools.hasValue(features[0], "开关")){
var name=features[0].get("name");
if(name.indexOf("联")!=-1){
$("#contextmenu_container").setMenu("联络开关");
}else{
$("#contextmenu_container").setMenu("其它开关");
}
}else if (mapTools.hasValue(features[0], "变压器")){
$("#contextmenu_container").setMenu("变压器");
}else if(features.length>0){
if (features[0].getGeometry().getType()==="LineString") {
$("#contextmenu_container").setMenu("LineString");
}
}else if(mapTools.hasValue(features[0], "变电站")){
$("#contextmenu_container").setMenu("变电站");
}else if(mapTools.hasValue(features[0],"环网箱")){
$("#contextmenu_container").setMenu("环网箱");
}else if(mapTools.hasValue(features[0],"配电房")){
$("#contextmenu_container").setMenu("配电房");
}
结果,当点击地图上的变电站,环网箱,配电房时,它是怎么都不显示出菜单来。
后来将顺序调动一下成这样:
//-------------设置右键菜单--------------
//console.log(event.get("name"));
if (mapTools.hasValue(features[0], "开关")){
var name=features[0].get("name");
if(name.indexOf("联")!=-1){
$("#contextmenu_container").setMenu("联络开关");
}else{
$("#contextmenu_container").setMenu("其它开关");
}
}else if (mapTools.hasValue(features[0], "变压器")){
$("#contextmenu_container").setMenu("变压器");
}else if(mapTools.hasValue(features[0], "变电站")){
$("#contextmenu_container").setMenu("变电站");
}else if(mapTools.hasValue(features[0],"环网箱")){
$("#contextmenu_container").setMenu("环网箱");
}else if(mapTools.hasValue(features[0],"配电房")){
$("#contextmenu_container").setMenu("配电房");
}else if(features.length>0){
if (features[0].getGeometry().getType()==="LineString") {
$("#contextmenu_container").setMenu("LineString");
}
}
以后碰到这种情况后,将判断语句的顺序调换一下,看能不能成。

本文探讨了C语言与JavaScript中elseif语句的区别,特别是在作用域处理上的不同。通过一个菜单设置程序的例子,展示了在实际编码中如何解决由语言特性引起的逻辑匹配问题。
8万+

被折叠的 条评论
为什么被折叠?



