title: Explicit passing initial value as undefined in array reduce
body: <p>I was testing few scenarios with array reduce function.</p>
  
  <pre><code>[1,2].reduce(function(initial ,  val){
  
          return initial+val;
      } ,1)
      // returns 4 as expected
  
  
  [1,2].reduce(function(initial ,  val){
  
      return initial+val;
  })
  // returns 3
  </code></pre>
  
  <p>But explicitly passing <code>undefined</code> as initial value</p>
  
  <pre><code>[1,2].reduce(function(initial ,  val){
  
      return initial+val;
  }, undefined)
  // returns NaN.
  </code></pre>
  
  <p>It appears unusual to me.</p>