I think it&#x27;s important to remember that Array::map() and Array::filter() construct new Arrays (even if the old one is quickly &quot;lost&quot; and collected).  It&#x27;s probable v8 sees this and does some trickery to make use of the existing allocated Array, but I doubt it.<p>let next = [ 1, 2, 3, 4 ].map(x =&gt; x * 2);<p>versus:<p>next = (x * 2 for x in [ 1 .. 4 ])<p>...which becomes:<p>&#x2F;&#x2F; Generated by CoffeeScript 1.10.0<p>(function() {
  var next, x;<p><pre><code>  next = (function() {
    var i, results;
    results = [];
    for (x = i = 1; i &lt;= 4; x = ++i) {
      results.push(x * 2);
    }
    return results;
  })();
</code></pre>
}).call(this);<p>Array::map()&#x2F;filter() get points for encouraging immutable transformations.