title: Is _.initial more verbose than it needs to be in Underscore.js?
body: <p>This is <code>underscore.js</code>'s code for <code>_.initial</code>:</p>
  
  <pre><code>  // Returns everything but the last entry of the array. Especially useful on
    // the arguments object. Passing **n** will return all the values in
    // the array, excluding the last N.
    _.initial = function(array, n, guard) {
      return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n)));
    };
  </code></pre>
  
  <p>It seems to me that the following would be less verbose and equivalent:</p>
  
  <pre><code>  _.initial = function(array, n, guard) {
      return slice.call(array, 0, Math.min(0, -(n == null || guard ? 1 : n)));
    };
  </code></pre>
  
  <p>Asking about such a detail is not out of place because <code>underscore.js</code> attempts to save as many bytes as possible. Take, for instance, this comment:</p>
  
  <pre><code>  // Save bytes in the minified (but not gzipped) version:
    var ArrayProto = Array.prototype, ObjProto = Object.prototype, FuncProto = Function.prototype;
  </code></pre>
  
  <p>Is there a reason for the more verbose code?</p>