2010-02-10 20 views
9

Noté en jQuery que la estructura siguiente código se utilizaventaja de utilizar (function() {...})() en JavaScript

(function(){var l=this,g,y=l.jQuery,p=l.$,...})()

que parece crear una función, y llámalo.

¿Cuál es la ventaja de tomar este enfoque en lugar de tener el contenido de la función en línea?

+1

duplicado: http://stackoverflow.com/questions/592396/what-is-the-purpose-of-a-self-executing-function-in-javascript –

+0

Este uno también: http://stackoverflow.com/questions/631187/javascript-scope-and-closure El problema es que la capacidad de búsqueda de estas preguntas/respuestas no es buena. Si todo lo que sé es "[javascript] (función()", entonces la búsqueda no hace un buen trabajo para encontrar algo útil. – Alan

Respuesta

7

Crea un cierre para evitar conflictos con otras partes del código. Ver esto:

Particularmente útil si usted tiene alguna otra biblioteca que utiliza el método $() y hay que conservar la capacidad de usar que con jQuery también. A continuación, puede crear un cierre como este:

(function($) { 
    // $() is available here 
})(jQuery); 
4

Crea un ámbito para las variables, en particular la definición de $, por ejemplo, para enlazar a jQuery, sin importar qué otras bibliotecas sobrescriban. Piense en ello como un espacio de nombre anónimo.

0

Es como:

var foo = function(){var l=this,g,y=l.jQuery,p=l.$,...}; 
foo(); 

Pero lo más simple y no necesita una variable global.

0

Permite tener variables y operaciones locales dentro de la función, en lugar de tener que transformar a los globales.

1

Con la función anónima de invocación automática, crea un ámbito local, es muy eficiente y se llama directamente a sí mismo.

Usted puede leer sobre él here

Cuestiones relacionadas