2023-05-03 11:06:20 +02:00
== Why is this an issue?
2020-06-30 12:47:33 +02:00
include::../description.adoc[]
2023-10-13 19:17:01 +02:00
Moreover, using chained assignments in declarations is also dangerous because one may accidentally create global variables. Consider the following code snippet: ``++let x = y = 1;++``. If ``++y++`` is not declared, it will be hoisted as global.
2021-11-05 14:06:08 +01:00
2023-10-13 19:17:01 +02:00
=== Exceptions
The rule does not raise issues for the following patterns:
* chained assignments: ``++a = b = c = 0;++``
* relational assignments: ``++(a = 0) != b++``
* sequential assignments: ``++a = 0, b = 1, c = 2++``
* assignments in lambda body: ``++() => a = 0++``
* conditional assignment idiom: ``++a || (a = 0)++``
* assignments in (do-)while conditions: ``++while (a = 0);++``
== How to fix it
include::../how-to-fix-it.adoc[]
=== Code examples
2020-06-30 12:47:33 +02:00
2023-10-13 19:17:01 +02:00
==== Noncompliant code example
[source,javascript,diff-id=1,diff-type=noncompliant]
2020-06-30 12:47:33 +02:00
----
2021-04-26 17:29:13 +02:00
if (val = value() && check()) { // Noncompliant
// ...
2020-06-30 12:47:33 +02:00
}
----
2023-10-13 19:17:01 +02:00
==== Compliant solution
2020-06-30 12:47:33 +02:00
2023-10-13 19:17:01 +02:00
[source,javascript,diff-id=1,diff-type=compliant]
2020-06-30 12:47:33 +02:00
----
2021-04-26 17:29:13 +02:00
val = value();
if (val && check()) {
// ...
2020-06-30 12:47:33 +02:00
}
----
include::../see.adoc[]
2021-06-02 20:44:38 +02:00
2021-06-03 09:05:38 +02:00
ifdef::env-github,rspecator-view[]
2021-09-20 15:38:42 +02:00
'''
== Implementation Specification
(visible only on this page)
include::../message.adoc[]
include::../highlighting.adoc[]
2021-06-08 15:52:13 +02:00
'''
2021-06-02 20:44:38 +02:00
== Comments And Links
(visible only on this page)
include::../comments-and-links.adoc[]
2023-06-22 10:38:01 +02:00
2021-06-03 09:05:38 +02:00
endif::env-github,rspecator-view[]