title: Why does Array.prototype.push return the new length instead of something more useful?
body: <p>Ever since its introduction in <a href="http://www.ecma-international.org/publications/files/ECMA-ST-ARCH/ECMA-262,%203rd%20edition,%20December%201999.pdf" rel="noreferrer">ECMA-262, 3rd Edition</a>, the <code>Array.prototype.push</code> method's return value is a <code>Number</code>: </p>
  
  <blockquote>
    <p><strong>15.4.4.7 Array.prototype.push ( [ item1 [ , item2 [ , … ] ] ] )</strong></p>
    
    <p>The arguments are appended to the end of the array, in the order in which they appear. <strong>The new length of the array is returned</strong> as the result of the call.</p>
  </blockquote>
  
  <p>What were the design decisions behind returning the array's new length, as opposed to returning something potentially more useful, like:</p>
  
  <ul>
  <li>A reference to the newly appended item/s</li>
  <li>The mutated array itself</li>
  </ul>
  
  <p>Why was it done like this, and is there a historical record of how these decisions came to be made?</p>