Why is this an issue?

Loop counters should not be modified in the body of the loop. However other loop control variables representing logical values may be modified in the loop, for example a flag to indicate that something has been completed, which is then tested in the for statement.

Noncompliant code example

var names = [ "Jack", "Jim", "", "John" ];
for (var i = 0; i < names.length; i++) {
  if (!names[i]) {
    i = names.length;                                 // Non-Compliant
  } else {
    console.log(names[i]);
  }
}

Compliant solution

var names = [ "Jack", "Jim", "", "John" ];
for (var name of names) {
  if (!name) {
    break;                                 // Compliant
  } else {
    console.log(name);
  }
}