Envolver una función entre paréntesis asegura esta función para ser evaluado como una expresión de la función .
Eso sucede porque los Grouping Operator (entre paréntesis), sólo se puede evaluar expresiones .
Si no se utilizan paréntesis, será interpretado como una declaración función, y provocará un error de sintaxis, ya que el nombre de la función es no opcional para la declaración de funciones.
(function(arg){
alert(arg); // alerts test
})("test");
En el ejemplo anterior, la expresión de la función se ejecuta automáticamente, pasando un argumento.
Ese patrón es muy utilizada por los plugins jQuery, ya que jQuery se puede ejecutar en modo noConflict, no se creará la variable global $
, por lo que el objeto global jQuery se pasa como argumento de esta función anónima y en el interior de esa función, puede referirse libremente a ella como $
(el argumento recibido).
Tenga en cuenta que también, el contexto de la función (la palabra clave this
) dentro de las expresiones de funciones autoejecutables invocada como el ejemplo anterior, se referirá siempre al objeto Global.
Para una información más detallada acerca de las diferencias entre las expresiones de función y declaraciones de funciones, dan un aspecto a los siguientes recursos:
posible duplicado de [JavaScript/jQuery sintaxis de la función de cierre] (http: // stackoverflow.com/questions/4472528/javascript-jquery-closure-function-syntax) – Matt