Definición de función JS: significado de los últimos paréntesis [duplicado]

Posible duplicado:
¿Cuál es el propósito de una función autoejecutable en javascript?
¿Qué significa esto? (función (x, y)) {…}) {a, b); en JavaScript

A veces veo funciones definidas como estos ejemplos:

(function() {
    ....     
})();

(function(param) {
    ....     
})(JQuery);

(function(chat, Friend) {
    ....     
})(chat, chat.module("friend");

Después de algunas búsquedas en la web, no encontré ninguna información sobre el significado de la información del último paréntesis.

¿Hay alguien que explique cómo usarlo? ¿O simplemente señalar un enlace web explicando el significado?

preguntado el 31 de diciembre de 12 a las 15:12

Llama a la función con parámetros. -

¿A qué corchetes (¿paréntesis?) te refieres exactamente? Algunos de estos ni siquiera son sintaxis válida. -

3 Respuestas

significado de los últimos corchetes

(function() {
    ....     
})();

La () al final hace que el código dentro de la función se ejecute inmediatamente.

(function(param) {
    ....     
})(JQuery);

La (JQuery) al final hace que el código dentro de la función se ejecute inmediatamente, pasando JQuery como parámetro de la misma.

(function(chat, Friend) {
    ....     
})(chat, chat.module("friend"));

La (chat, chat.module("friend")) al final hace que el código dentro de la función se ejecute inmediatamente, pasando chat y chat.module("friend") como parámetros para ello.

Respondido el 31 de diciembre de 12 a las 16:12

Los paréntesis no coinciden en los ejemplos de código n.º 1 y n.º 2. Deberías arreglar eso para el autor de la pregunta. - Juan Dvorak

@JanDvorak: Gracias. No me di cuenta de eso, supongo que es un error de copiar y pegar. Los arreglé ahora. - ¡no

Supongamos que tuviéramos:

function add1 (x) {
    return x+1;
}

Entonces podríamos llamar add1(5) para obtener el valor 6.

Pero con los corchetes, en lugar de llamar add1(5), podemos reemplazarlo con (function (x) {return x+1;})(5). Básicamente, esto crea una función y la aplica al valor 5 inmediatamente, mientras que cuando llamamos add1(5), estamos usando una función nombrada/definida.

Respondido el 31 de diciembre de 12 a las 16:12

Mira esta pregunta: ¿Cómo se llama esta práctica en JavaScript?

Básicamente, la función se ejecutará con los parámetros que le pases. En este ejemplo, param tendrá el valor de jQuery:

(function(param) {
    ....     
})(JQuery);

contestado el 23 de mayo de 17 a las 13:05

Debería ser un error. La línea })(JQuery); sería válido, al igual que }(JQuery));, Pero no })(JQuery)); a menos que su declaración de función inicial se vea como ((function ($) { sin razón. - Norguard

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.