43 lines
1.1 KiB
Plaintext
43 lines
1.1 KiB
Plaintext
Many of JavaScript's ``++Array++`` methods return an altered version of the array while leaving the source array intact. ``++reverse++`` and ``++sort++`` do not fall into this category. Instead, they alter the source array _in addition to_ returning the altered version, which is likely not what was intended.
|
|
|
|
|
|
This rule raises an issue when the return values of these methods are assigned, which could lead maintainers to overlook the fact that the original value is altered.
|
|
|
|
|
|
== Noncompliant Code Example
|
|
|
|
[source,javascript]
|
|
----
|
|
var b = a.reverse(); // Noncompliant
|
|
var d = c.sort(); // Noncompliant
|
|
----
|
|
|
|
|
|
== Compliant Solution
|
|
|
|
[source,javascript]
|
|
----
|
|
var b = [...a].reverse(); // de-structure and create a new array, so reverse doesn't impact 'a'
|
|
a.reverse();
|
|
|
|
c.sort(); // this sorts array in place
|
|
----
|
|
|
|
|
|
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[]
|