En JavaScript, PL / SQL y algunos otros lenguajes, las funciones pueden anidarse, es decir, declararse dentro de otra función. Esto podría usarse para dividir una función grande en piezas más pequeñas, pero mantener esas piezas dentro del contexto de la función más grande.
function doTooMuch() {
function doSomething () {
...
}
function doSomethingElse() {
...
}
function doYetAnotherThing() {
...
}
// doTooMuch body
doSomething();
doSomethingElse();
doYetAnotherThing();
}
En algunos casos, cuando esas funciones más pequeñas no usan variables locales de la función más grande, esto podría cambiar fácilmente a una versión en la que todas las funciones no estén asignadas.
function doSomething () {
...
}
function doSomethingElse() {
...
}
function doYetAnotherThing() {
...
}
function doTooMuch() {
doSomething();
doSomethingElse();
doYetAnotherThing();
}
Suponiendo que esas funciones anidadas no se usen en ningún otro lugar, ¿es mejor mantenerlas dentro del contexto de la función grande o es malo porque esto es exactamente lo que hace que la función grande sea, bueno, grande?
fuente
jquery(function($){ $('#id').click(function(){...}); }
Esta es una de esas preguntas que no tienen una respuesta correcta y me vienen a la mente palabras como "preferencia personal", "práctica de equipo". En mi opinión, las pequeñas funciones (ahora aquí hay otra cosa subjetiva) que no se usan en ningún lugar pertenecen a sus funciones principales, especialmente cuando no se pueden nombrar.
fuente
Esta pregunta no tiene una respuesta correcta, porque ninguna opción maximiza la encapsulación. Si los anida, todavía tienen acceso a variables que no deberían. Si no lo hace, entonces otras funciones tienen acceso a funciones que no deberían. De cualquier manera, pierdes.
fuente