Having an unconditional `break`, `return` or `throw` in a loop renders it useless; the loop will only execute once and the loop structure itself is simply wasted keystrokes.

Having an unconditional `continue` in a loop is itself wasted keystrokes.

For these reasons, unconditional jump statements should never be used except for the final `return` in a function or method.

## Noncompliant Code Example

    for (i = 0; i < 10; i++) {
      console.log("i is " + i);
      break;  // loop only executes once
    }

    for (i = 0; i < 10; i++) {
      console.log("i is " + i);
      continue;  // this is meaningless; the loop would continue anyway
    }

    for (i = 0; i < 10; i++) {
      console.log("i is " + i);
      return;  // loop only executes once
    }

## Compliant Solution

    for (i = 0; i < 10; i++) {
      console.log("i is " + i);
    }

## See

- MISRA C:2004, 14.1 - There shall be no unreachable code.
- MISRA C++:2008, 0-1-1 - A project shall not contain unreachable code.
- MISRA C++:2008, 0-1-9 - There shall be no dead code.
- MISRA C:2012, 2.2 - There shall be no dead code
- CERT, MSC12-C. - Detect and remove code that has no effect or is never executed