pagina online funciones funcion ejemplos ejecutar codigo clases cargar carga automaticamente asincrona antes anonimas javascript jquery iife

online - funciones anonimas javascript



funciĆ³n de auto ejecuciĆ³n jquery vs javascript diferencia (9)

¿Cuáles son las diferencias entre

Primero :-

(function () { var Book = ''hello''; }());

Segundo:-

(function () { var Book = ''hello''; })();

El primero y el segundo son similares en el trabajo.

Tercero :-

(function ($) { var Book = ''hello''; })(jQuery);

Qué patrón necesito usar y en qué lugar de mi codificación. Tercer patrón de módulo que he visto mientras leía un artículo relacionado con backboneJS.

Lo que entendí de la Tercera "función de auto ejecución con el argumento" jQuery "" ....

¿Puede alguien darme una idea acerca de las expresiones de función invocadas inmediatamente (IIFE) ?

Gracias !!


Como han dicho todas las demás respuestas, en la tercera función pasas JQuery a la función.

Me gustaría tomarme un momento y explicar por qué los dos primeros son iguales.

Cuando creas una función, el nombre de esa función es realmente un puntero a función. Por ejemplo, en la function foo(){} , foo es un puntero a la función que acabas de realizar (lo que explica cosas como this ). No hace referencia a ese puntero (y, por lo tanto, ejecuta la función) agregando paréntesis al final del nombre de la función: foo() .

Entonces, si miramos ese código nuevamente, en el número uno, primero creas la función:

function () { var Book = ''hello''; }

Y luego lo eliminas, ejecutando efectivamente la función: ()

En el segundo ejemplo, rodeas la totalidad de la creación de la función entre paréntesis:

(function () { var Book = ''hello''; })

Esto garantiza que realice la operación de creación antes de su próximo comando, que es volver a hacer referencia a la función nuevamente: () . Los paréntesis en este caso no son realmente necesarios, ya que la función se creará antes de que se ejecute de todos modos.


Como las otras respuestas señalaron, todas son funciones anónimas autoejecutables o funciones anónimas inmediatas.

El tercer ejemplo se usa para crear alias para variables fuera de la función. Esta es una buena manera de evitar conflictos de nombre y crear código donde sea posible cambiar fácilmente un módulo usado en la función. Es esencialmente una forma de inyección de dependencia.

(function (doc, win, $, myModule) { // Code }(document, window, jQuery, window.MYAPP.myModule));

doc , win , $ y myModule son variables inyectadas. Con este patrón es trivial cambiar cualquiera de los componentes inyectados. Me gusta esto

(function (doc, win, $, myModule) { // Code }(document, window, jQuery, window.MYAPP.myModule2)); //Use myModule2 instead myModule


De hecho, los tres son funciones de ejecución automática y ti realmente depende de lo que necesites hacer.

La única diferencia entre es entre 3. 1 y 2 son la misma.

La diferencia con 3 es que está pasando una referencia a jquery como argumento. Ahora todas las funciones dentro de esta función de annoyomus tienen acceso a jque


En todos los casos estás haciendo una función anónima. Creo que 1 es lo mismo que 2. En el tercer caso, está pasando jQuery como argumento. Esto se hace cuando desea encapsular jQuery dentro del alcance de su función.

Por ejemplo, en su aplicación, jQuery var podría ser jQuery. Pero dentro de su función anónima puede usarla como $.

(function ($) { //Here jQuery is $ var Book = $(document.body).text(); })(jQuery); //Out of your function, you user jQuery as jQuery (in this example) var Book = jQuery(document.body).text();


Esto se denomina cierre para evitar conflictos con otras bibliotecas, como mootools que usan $ . De esta manera, puedes asegurarte de usar $ en esa función pasando jQuery como parámetro.

(function ($) { $(function () { // Here in this block you can use ''$'' in place of jQuery ....... }); })(jQuery); //<----passing jquery to avoid any conflict with other libraries.


Las expresiones de función invocadas de inmediato (IIFE) son una de las funciones principales de JavaScript. Su objetivo principal es no saturar los espacios de nombres con funciones y variables desechables.

Si usa una variable o una función solo una vez, no necesita que esté disponible para el resto del código (por lo tanto, hace un acceso privado, por ejemplo). En el caso de funciones, puede dejar que sean anónimas, como las siguientes:

(function(){ console.log("Hello symfony world!"); }());

Por favor verifique con este enlace.


Los tres ejemplos son expresiones de función invocadas inmediatamente ( IIFE ).

La única diferencia es que en el tercer ejemplo, jQuery se transmite como una variable que le permite usarlo dentro del IIFE utilizando su convención de denominación en dólares. p.ej

(function ($) { var Book = ''hello''; $(''#bookelement'').html(Book); })(jQuery);


Todas estas son funciones de auto ejecución. Hoy en día también se conocen como Expresiones de función invocadas de inmediato (IIFE).

Los dos primeros son exactamente iguales con una sintaxis ligeramente diferente y el tercero pasa un parameter como objeto jQuery.


Todos estos son ejemplos de la función de auto-invocación.

Esto le dará una visión clara: -

var my_func = function(){ var internal_var = "Hello"; return internal_var; }; var my_func2 = function(name){ var internal_var = "Hello"; return internal_var; }; var long_var_name = "I can be some object or number or object or array"; var result1 = (my_func()); var result2 = (my_func)(); var result3 = (my_func2)(long_var_name); console.log(result1, result2, result3);

Usando este ejemplo, puedes compararlo con los métodos Primero , Segundo y Tercero .