从Javascript中的if块退出

Exit from if block in Javascript

本文关键字:退出 if 中的 Javascript      更新时间:2023-09-26

我想退出下面的Java脚本中的if块。如果我返回,那么它不会检查下一个if条件。我该怎么做?

if ($('#id1').length > 0) {
    if(yester_energy == "NaN" || yester_energy == 0){
      //break from #id1
    }
    else{
      //something
    }
    $("#abc").html(somthing)
}
if ($('#id2').length > 0) {
        if(yester_energy == "NaN" || yester_energy == 0){
          //break from #id2
        }
        else{
          //something
        }
}

派对非常晚,但对于搜索人员来说,您可以使用labeling。这不是一个好的做法,但在极少数情况下可以应用。基本上,您可以为想要中断的if语句指定一个名称。语句中的任何位置都从指定的名称调用break

代码示例:

my_if: if (condition) { 
    // do stuff
    break my_if;
    // not do stuff
}

在您的特殊情况下:

id1: if ($('#id1').length > 0) {
    if(yester_energy == "NaN" || yester_energy == 0){
        break id1;
    }else{
      //something
    }
    $("#abc").html(somthing)
}

有关labeling的更多信息,请点击此处:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/label#Syntax

甚至在派对之后。。。通常在这种情况下,我使用ifdo...while的组合,如下所示。。。

if ( condition ) do {
  // processing
  if ( exit_condition ) break;
  // more processing...
} while ( false );

因此,当遇到break时,它应用于do...while循环,并且在while之后继续处理,有效地突破了外部if语句。。。

if(isNaN(yester_energy) || yester_energy == 0)之后的所有代码都在else块中,因此如果数据与该if匹配,则不会执行该代码。而且你根本不需要其他任何东西。

此外,如果您想检查变量是否获得了NaN值,请使用isNaN()函数。你不能只比较它。

使用开关状态,

   switch(n)
    {
    case 1:
      execute code block 1
      break;
    case 2:
      execute code block 2
      break;
    default:
      code to be executed if n is different from case 1 and 2
    }

您可以使用函数并传递命令

function iff(condition){
 if(condition ==0) return;
 console.log("other commands")
}

iff(0);
iff(1)

 
 

不要使用标签

你可以按照另一个答案的建议进行标记,但它闻起来很不对劲,肯定会在代码审查中出现。它会混淆代码的读者,并增加代码库的维护负担。

答案

最好的方法是将if语句中的代码重构(提取)为一个单独的函数,然后可以从中提取return。除了允许您提前退出代码块之外,它还使您的代码更加模块化和可读。

示例(基于OP)

if ($('#id1').length > 0) {
    ifInner(yester_energy)
    
    $("#abc").html(somthing) // [sic]
}
if ($('#id2').length > 0) {
    ifInner(yester_energy)
}
// Rename to something more descriptive.
function ifInner(yester_energy) {
    if (yester_energy == "NaN" || yester_energy == 0){
        // Break out.
        return;
    }
    else {
        // something
    }
}

向池中添加另一个答案,在许多情况下,使用try-catch是完全合理的:

if(something is allowed) {
  try {
    if(missing requirements) throw 'missing requirements'
    //do your stuff;
  }
  catch {
    //you may do logging and issue warning here
  }
}