57 lines
1.4 KiB
Plaintext
57 lines
1.4 KiB
Plaintext
== Why is this an issue?
|
|
|
|
Arrays in JavaScript have several methods for filtering, mapping, or folding that require a callback. Not having a return statement in such a callback function is most likely a mistake, because processing of the array uses the return value of the callback. If there is no return, callback will implicitly return ``++undefined++``, which will likely fail.
|
|
|
|
|
|
This rule applies for the following methods of an array:
|
|
|
|
* ``++Array.from++``
|
|
* ``++Array.prototype.every++``
|
|
* ``++Array.prototype.filter++``
|
|
* ``++Array.prototype.find++``
|
|
* ``++Array.prototype.findIndex++``
|
|
* ``++Array.prototype.map++``
|
|
* ``++Array.prototype.reduce++``
|
|
* ``++Array.prototype.reduceRight++``
|
|
* ``++Array.prototype.some++``
|
|
* ``++Array.prototype.sort++``
|
|
|
|
|
|
=== Noncompliant code example
|
|
|
|
[source,javascript]
|
|
----
|
|
let arr = ["a", "b", "c"];
|
|
let merged = arr.reduce(function(a, b) {
|
|
a.concat(b);
|
|
}); // Noncompliant: No return statement, will result in TypeError
|
|
----
|
|
|
|
|
|
=== Compliant solution
|
|
|
|
[source,javascript]
|
|
----
|
|
let arr = ["a", "b", "c"];
|
|
let merged = arr.reduce(function(a, b) {
|
|
return a.concat(b);
|
|
}); // merged === "abc"
|
|
----
|
|
|
|
|
|
|
|
ifdef::env-github,rspecator-view[]
|
|
|
|
'''
|
|
== Implementation Specification
|
|
(visible only on this page)
|
|
|
|
include::message.adoc[]
|
|
|
|
'''
|
|
== Comments And Links
|
|
(visible only on this page)
|
|
|
|
include::comments-and-links.adoc[]
|
|
endif::env-github,rspecator-view[]
|