== 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[]