如何停止编写链码?

Rya*_*ygg 9 javascript chain

例如...

if ( /* Condition */ ) {

    if ( /* Condition */ ) {

        if ( /* Condition */ ) {

          // Superb!

        } else {

          // Error 3

        }

    } else {

      // Error 2

    }

} else {

  // Error 1

}
Run Code Online (Sandbox Code Playgroud)

你知道怎么避免这个吗?谢谢!

cdh*_*wie 11

如果这是库函数,则throw可能是相应的操作.

if (!condition1) {
    throw "Condition 1 failed.";
}

if (!condition2) {
    throw "Condition 2 failed.";
}

if (!condition3) {
    throw "Condition 3 failed.";
}

// Superb!
Run Code Online (Sandbox Code Playgroud)

其他可接受的行动可能是:

  • 返回0,nullundefined.
  • 向用户显示错误并返回.

您必须确定哪种失败操作适合您的用例.

  • +1:通过反转条件以首先检查"else"部分来避免"箭头"嵌套条件,这是一个好习惯.与嵌套的成功检查流相比,线性错误检查流更容易阅读和支持. (2认同)
  • @David:点头.我的一位大学CS教授讨厌像`return;`这样的东西,除了在函数的最后,因为它"像goto".所以我写了这样的代码来惹恼他,并且实际上发现我更喜欢它如何读取嵌套条件的荒谬级别. (2认同)