¿Es posible tener una función dentro de otra función como esa?jquery función dentro de una función
function foo() {
// do something
function bar() {
// do something
}
bar();
}
foo();
¿Es posible tener una función dentro de otra función como esa?jquery función dentro de una función
function foo() {
// do something
function bar() {
// do something
}
bar();
}
foo();
Sí, puede tener así. bar
no será visible para nadie fuera de foo
.
Y puede llamar bar
dentro foo
como:
function foo() {
// do something
function bar() {
// do something
}
bar();
}
Eso se llama una función anidada en Javascript. La función interna es privada para la función externa, y también forma un cierre. Más detalles están disponibles here.
Tenga especial cuidado con las colisiones de nombres variables, sin embargo. Una variable en la función externa es visible para la función interna, pero no viceversa.
Quiere decir alcance. ;) – daryl
¿Dónde exactamente me refiero al alcance? – GarlicFries
"Una variable en la función externa es visible para la función interna, pero no al revés". @Brennon – daryl
Sí, puedes.
O usted puede hacer esto,
function foo(){
(function(){
//do something here
})()
}
O esto,
function foo(){
var bar=function(){
//do something here
}
}
O desea que la "barra" función para ser universal,
function foo(){
window.bar=function(){
//something here
}
}
Hop esto le ayuda.
@ gion_13: estrictamente hablando, tener una función dentro de una función no es un "cierre". El aspecto de que la función conservará cualquier variable en su alcance incluso si no son parte del cuerpo de la función en sí (es decir, variables no locales) lo convierte en un "cierre". – FK82