如何在JavaScript的else if分支中跳出并执行else代码块?
解决方案
这里有几种无需新增else if语句就能实现需求的方法:
方法1:封装else分支逻辑+标志判断
把else分支的代码抽成独立函数,在else if分支内判断函数是否符合预期,不符合时直接调用该函数:
var argument = "something"; // 封装else分支的逻辑 function runElseLogic() { // 若上述两个分支都不满足则执行此代码 console.log("执行else分支逻辑"); } if(argument == 'not_this'){ // 此分支不会触发 } else if(argument){ // 模拟函数不符合预期的场景 const isFunctionValid = false; if(isFunctionValid) { // 函数符合预期时的处理逻辑 console.log("函数符合预期,执行当前分支"); } else { // 不符合预期时直接调用else分支逻辑 runElseLogic(); } } else { runElseLogic(); }
方法2:用函数返回值控制流程
把分支判断逻辑封装到函数中,通过返回值决定是否执行else分支的代码:
var argument = "something"; function checkArgument(arg) { if(arg == 'not_this'){ // 此分支不会触发 return false; } else if(arg){ const isFunctionValid = false; if(isFunctionValid) { // 函数符合预期的处理逻辑 console.log("函数符合预期"); return true; } // 函数不符合预期,返回false return false; } return false; } // 若函数返回false,执行else分支逻辑 if(!checkArgument(argument)) { console.log("执行else分支"); }
方法3:标签跳转(不推荐)
虽然可以用标签实现跳转,但会降低代码可读性,仅作场景参考:
var argument = "something"; outer: { if(argument == 'not_this'){ break outer; } else if(argument){ const isFunctionValid = false; if(!isFunctionValid) { // 不符合预期,跳出到标签后的else逻辑 break outer; } // 函数符合预期时的处理逻辑 console.log("函数符合预期"); break outer; } // else分支逻辑放在此处 console.log("执行else分支"); }
总结
优先推荐前两种方法,尤其是封装函数的方式,既保证代码清晰又避免重复。标签跳转仅适用于特殊场景,日常开发不建议使用,会让逻辑变得晦涩。
内容的提问来源于stack exchange,提问作者jji05
相关产品推荐
相关产品推荐

