46 lines
1000 B
Plaintext
Raw Normal View History

== 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.
2020-06-30 12:48:07 +02:00
=== Noncompliant code example
2020-06-30 12:48:07 +02:00
2022-02-04 17:28:24 +01:00
[source,javascript]
2020-06-30 12:48:07 +02:00
----
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
2020-06-30 12:48:07 +02:00
2022-02-04 17:28:24 +01:00
[source,javascript]
2020-06-30 12:48:07 +02:00
----
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[]