Como todos han dicho, tiene que ver prácticamente con la creación del alcance local. Otro beneficio es que puede usarlo para (a falta de una palabra mejor) variables de "cambio de nombre". Tomemos por ejemplo, cómo varios frameworks de JavaScript usan $
como una abreviatura de su función de biblioteca principal.Si crea un cierre como en tu ejemplo, no importa lo que es $
exterior, se puede utilizar como un parámetro y en su interior puede ser lo que quiera:
// out here $ might be Prototype, something else, or even undefined
(function($) {
// in here, $ is jQuery
})(jQuery);
Otro pequeño consejo para eking un par de milisegundos adicionales de su secuencia de comandos es utilizar esta misma técnica para crear una variable indefinida. La mayoría de las personas piensa que undefined
es una palabra clave especial en javascript, pero en realidad solo se trata como una variable normal, que esperaría que nadie definiera. La práctica algo estándar de comprobación de un variable no definida:
if (x == undefined)
... En realidad, es más bien un desperdicio, ya que comprueba toda la cadena de margen para una variable llamada "indefinido". Para atajar este, puede utilizar este método:
(function($, undefined) {
// code here
})(jQuery); // note that there's just one parameter passed
Ahora que undefined
es en realidad en un ámbito (con un valor indefinido), comprobando la cadena de ámbito puede parar en ese punto. Micro-optimización, sí, pero no está de más saberlo.
Debes tirar jQuery, ¿no es así? –
Jaja, bueno, es _mi_ favorita;) –