JavaScript中判断语句的“坑”

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

庭博

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值