== Why is this an issue? include::../description.adoc[] 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. === 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 ==== Noncompliant code example [source,javascript,diff-id=1,diff-type=noncompliant] ---- if (val = value() && check()) { // Noncompliant // ... } ---- ==== Compliant solution [source,javascript,diff-id=1,diff-type=compliant] ---- val = value(); if (val && check()) { // ... } ---- include::../see.adoc[] ifdef::env-github,rspecator-view[] ''' == Implementation Specification (visible only on this page) include::../message.adoc[] include::../highlighting.adoc[] ''' == Comments And Links (visible only on this page) include::../comments-and-links.adoc[] endif::env-github,rspecator-view[]