Globals son malos porque no causan problemas de inmediato. Solo más tarde, después de que los haya utilizado por todas partes, causarán problemas muy desagradables, que ya no podrá resolver sin escribir su código desde cero.
Ejemplo: Utiliza $body
para definir algunas funciones. Eso funciona bien Pero eventualmente, también necesitas un valor. Entonces usted usa $body.foo
. Funciona bien. Luego agrega $body.bar
. Y luego, semanas más tarde, necesita otro valor para agregar $body.bar
.
Prueba el código y parece funcionar. Pero, de hecho, ha "agregado" la misma variable dos veces. Esto no es problema porque JavaScript no entiende el concepto de "crear una nueva variable una vez". Simplemente sabe "crear a menos que ya exista". Entonces usa su código y eventualmente, una función modificará $body.bar
rompiendo otra función. Incluso encontrar el problema te llevará mucho tiempo.
Es por eso que es mejor asegurarse de que las variables solo se puedan ver según sea necesario. De esta manera, una función no puede romper a otra. Esto se vuelve más importante a medida que su código crece.
O sobrescribe alguna 'otra' variable global llamada $ body – Mchl
sí, pero en este ejemplo reemplazaría el valor global, de esta manera solo lo oculta en el alcance de la función – mpapis
Un literal de función usando variables locales que fueron declaradas en el mismo alcance que se definió la función se llama a [closure] (http://jibbering.com/faq/notes/closures/), y se debe usar extensivamente en jQuery con gran efecto. – Phrogz