include::../why.adoc[] === Exceptions The rule ignores * Initializations to `-1`, `0`, `1`, `undefined`, `[]`, `{}`, `true`, `false` and `""`. * Variables that start with an underscore (e.g. ``++_unused++``) are ignored. * Assignment of `null` is ignored because it is sometimes used to help garbage collection * Increment and decrement expressions are ignored because they are often used idiomatically instead of `x+1` * This rule also ignores variables declared with object destructuring using rest syntax (used to exclude some properties from object) [source,javascript] ---- let {a, b, ...rest} = obj; // 'a' and 'b' are compliant doSomething(rest); let [x1, x2, x3] = arr; // 'x1' is noncompliant, as omitting syntax can be used: "let [, x2, x3] = arr;" doSomething(x2, x3); ---- include::../howtofixit.adoc[] === Code examples ==== Noncompliant code example [source,javascript,diff-id=1,diff-type=noncompliant] ---- function foo(y) { let x = 100; // Noncompliant: dead store x = 150; // Noncompliant: dead store x = 200; return x + y; } ---- ==== Compliant solution [source,javascript,diff-id=1,diff-type=compliant] ---- function foo(y) { let x = 200; // Compliant: no unnecessary assignment return x + y; } ---- include::../see.adoc[] === Related rules * S1763 - All code should be reachable * S2589 - Boolean expressions should not be gratuitous * S3516 - Function returns should not be invariant * S3626 - Jump statements should not be redundant ifdef::env-github,rspecator-view[] ''' == Implementation Specification (visible only on this page) include::../message.adoc[] include::../comments-and-links.adoc[] endif::env-github,rspecator-view[]