Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 什么是正确/清洁开关(或一般功能)控制流程?_Javascript_Switch Statement - Fatal编程技术网

Javascript 什么是正确/清洁开关(或一般功能)控制流程?

Javascript 什么是正确/清洁开关(或一般功能)控制流程?,javascript,switch-statement,Javascript,Switch Statement,我在switch语句中偶然发现了一个bug(两种情况),其中两种情况都运行,因为前者使后者成为真。我找到了两种解决方案,但我不知道应该使用哪一种,或者是否应该将两者结合起来 我最初的想法只是在每一个案例的结尾加上中断。但我的同事建议我交换订单,因为后者不能以这种方式干扰前者。也许我应该两者都做?我认为换行看起来更清晰,但换行是优雅的您希望从您的同事那里看到什么? **---OPTION 1---** var created = false; function clicker(){ swi

我在switch语句中偶然发现了一个bug(两种情况),其中两种情况都运行,因为前者使后者成为真。我找到了两种解决方案,但我不知道应该使用哪一种,或者是否应该将两者结合起来

我最初的想法只是在每一个案例的结尾加上中断。但我的同事建议我交换订单,因为后者不能以这种方式干扰前者。也许我应该两者都做?我认为换行看起来更清晰,但换行是优雅的您希望从您的同事那里看到什么?

**---OPTION 1---**
var created = false;
function clicker(){
    switch(created){
        case false:
            **some code**
            created = true;
            break;
        case true:
            **some code**
            break;
    }
}

**---OPTION 2---**
var created = false;
function clicker(){
    switch(created){
        case true:
            **some code**
        case false:
            **some code**
            created = true;
    }
}
最初,我运行选项1,但没有中断。Case“false”将运行,使Case“true”=true,然后Case“true”将运行


这两个选项都可以修复它。哪个更好?您有更好的解决方案吗?

只要使用
if
语句:

**---OPTION 1---**
var created = false;
function clicker(){
    switch(created){
        case false:
            **some code**
            created = true;
            break;
        case true:
            **some code**
            break;
    }
}

**---OPTION 2---**
var created = false;
function clicker(){
    switch(created){
        case true:
            **some code**
        case false:
            **some code**
            created = true;
    }
}
function clicker() {
    if (created) {
        //Some code
    } else {
        //Some code
        created = true;
    }
}

我不喜欢这两种情况,
开关
丑陋、冗长且容易出错。请改用
if
/
else
语句,或者可能使用对象
if(created){handleCreated();}else{handleNotCreated();}
您可以
返回在函数内的开关中,而不是
中断。似乎其他评论都同意。谢谢你的帮助:)