Forma óptima / preferida de llamar a 'SP.ClientContext.executeQueryAsync' en SharePoint

He estado aprendiendo el modelo de objetos del lado del cliente y encontré el métodoexecuteQueryAsync. Descubrí que hay bastantes formas de llamar a este método. Algunos de los que encontré fueron estos:

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);

¿Cuál de estas formas es la más óptima / preferida? También qué hace la declaraciónFunction.createDelegate ¿hacer? losdocumentación para esta función Parece ser muy críptico para mí.

Respuestas a la pregunta(2)

Su respuesta a la pregunta