title: What are the differences (if any) between ES6 arrow functions and functions bound with Function.prototype.bind?
body: <p>It seems to me that, in ES6, the following two functions are very <em>nearly</em> identical:</p>
  
  <pre><code>function () {
    return this;
  }.bind(this);
  
  () =&gt; {
    return this;
  };
  </code></pre>
  
  <p>The end result seems the same: arrow functions produce a JavaScript function object with their <code>this</code> context bound to the same value as the <code>this</code> where they are created.</p>
  
  <p>Obviously, in the general sense, <code>Function.prototype.bind</code> is more flexible than arrow functions: it can bind to values other than the local <code>this</code>, and it can bind any function's <code>this</code> at any point in time, potentially long after it is initially created. However, I'm not asking how <code>bind</code> itself is different from arrow functions, I'm asking how arrow functions differ from immediately calling <code>bind</code> with <code>this</code>.</p>
  
  <p>Are there any differences between the two constructs in ES6?</p>