46 lines
1000 B
Plaintext
46 lines
1000 B
Plaintext
== 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
|
|
|
|
[source,javascript]
|
|
----
|
|
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
|
|
|
|
[source,javascript]
|
|
----
|
|
var names = [ "Jack", "Jim", "", "John" ];
|
|
for (var name of names) {
|
|
if (!name) {
|
|
break; // Compliant
|
|
} else {
|
|
console.log(name);
|
|
}
|
|
}
|
|
----
|
|
|
|
ifdef::env-github,rspecator-view[]
|
|
|
|
'''
|
|
== Implementation Specification
|
|
(visible only on this page)
|
|
|
|
include::message.adoc[]
|
|
|
|
include::highlighting.adoc[]
|
|
|
|
endif::env-github,rspecator-view[]
|