== Why is this an issue?

include::../description.adoc[]

== How to fix it

=== Code examples

The following example demonstrates the behavior of the rule with the default threshold of 3 levels of nesting
and one of the potential ways to fix the code smell by introducing guard clauses:

==== Noncompliant code example

[source,javascript,diff-id=1,diff-type=noncompliant]
----
if (condition1) {                  // Compliant - depth = 1
  /* ... */
  if (condition2) {                // Compliant - depth = 2
    /* ... */
    for (let i = 0; i < 10; i++) {  // Compliant - depth = 3
      /* ... */
      if (condition4) {            // Noncompliant - depth = 4, which exceeds the limit
        if (condition5) {          // Depth = 5, exceeding the limit, but issues are only reported on depth = 4
          /* ... */
        }
        return;
      }
    }
  }
}
----

==== Compliant solution

[source,javascript,diff-id=1,diff-type=compliant]
----
if (!condition1) {
  return;
}
/* ... */
if (!condition2) {
  return;
}
for (let i = 0; i < 10; i++) {
  /* ... */
  if (condition4) {
    if (condition5) {
      /* ... */
    }
    return;
  }
}
----

include::../resources.adoc[]

ifdef::env-github,rspecator-view[]

'''
== Implementation Specification
(visible only on this page)

include::../message.adoc[]

include::../parameters.adoc[]

include::../highlighting.adoc[]

'''
== Comments And Links
(visible only on this page)

include::../comments-and-links.adoc[]

endif::env-github,rspecator-view[]
