Why does Array.prototype.push return the new length instead of something more useful?
Ever since its introduction in ECMA-262, 3rd Edition , the Array.prototype.push method's return value is a Number : 15.4.4.7 Array.prototype.push ( [ item1 [ , item2 [ , … ] ] ] ) The arguments are appended to the end of the array, in the order in which they appear. The new length of the array is returned as the result of the call. What were the design decisions behind returning the array's new length, as opposed to returning something potentially more useful, like: A reference to the newly appended item/s The mutated array itself Why was it done like this, and is there a historical record of