JavaScript中判断语句的“坑”

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jintingbo/article/details/82970110

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

以后碰到这种情况后,将判断语句的顺序调换一下,看能不能成。

猜你喜欢

转载自blog.csdn.net/jintingbo/article/details/82970110