2010-07-20 6 views
6
(function ($) { 
     ... 
    }) (jQuery); 
+1

http://stackoverflow.com/questions/2024888/a-simple-question-on-jquery-closure – gnarf

Respuesta

6

Para evitar conflictos con otras bibliotecas de JavaScript que también usan $.

Este método, sin embargo, le permite usar $ en esa función a su voluntad, sin necesidad de utilizar jQuery allí.

Ese patrón también es importante al escribir complementos de jquery.

+0

¡Muchas gracias! ¡Todas las respuestas y comentarios me iluminaron! – kaneda

+0

@laramaki: De nada :) – Sarfraz

2

Se crea una función, con $ como argumento, e inmediatamente se ejecuta esa función con jQuery como argumento. De hecho, esto asegurará que $ apunta a jQuery dentro de su código, incluso si se usa jQuery.noConflict().

1

De esta manera, se puede utilizar $ dentro de su ámbito de funciones, pero en el exterior, jQuery no está clobbering uso de $ (por ejemplo prototipo también utiliza $, y algunas personas les gusta mezclar los dos juntos)

otras bibliotecas
0

Además de la razón detallada en las otras respuestas, es (¡ligeramente!) Más rápido acceder a los argumentos de función que las variables globales.

Mientras no se haya llamado a jQuery.noConflict(), podría escribirse como function($){ … }($) con el mismo efecto.

0

También llamada función de devolución de llamada anónima, ya que está vinculada a cualquier objeto, por lo que es estrictamente 'funcional'. Un buen patrón de diseño al diseñar complementos con jQuery para evitar conflictos, como otros señalaron.

Cuestiones relacionadas