title: Optimal/preferred way to call 'SP.ClientContext.executeQueryAsync' in SharePoint
body: <p>I have been learning client-side object model and came across the method <a href="http://msdn.microsoft.com/en-us/library/office/dn168907(v=office.15).aspx" rel="noreferrer"><code>executeQueryAsync</code></a>. I found there are quite a few ways to call this method. Some of the one I found were these:</p>
  
  <pre><code>var context = new SP.ClientContext.get_current();
  
  // Option 1
  context.executeQueryAsync(
      function(sender, args){ },
      function(sender, args){ }
  );
  
  // Option 2
  context.executeQueryAsync(
      Function.createDelegate(this, _onSucceed), 
      Function.createDelegate(this, _onFail)
  );
  
  // Option 3
  context.executeQueryAsync(
      Function.createDelegate(this, this._onSucceed), 
      Function.createDelegate(this, this._onFail)
  );
  
  // Option 4
  context.executeQueryAsync(_onSucceed, _onFail);
  </code></pre>
  
  <p>Which of this way is the most optimal/preferred one? Also what does the statement <code>Function.createDelegate</code> do? The <a href="http://msdn.microsoft.com/en-us/library/dd393582(v=vs.100).aspx" rel="noreferrer">documentation for this function</a> seems to be very cryptic for me.</p>