2011-07-21 21 views
7

¿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(); 
+1

@ 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

Respuesta

14

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(); 

} 
+0

Actualicé el código un poco, ¿es posible? Perdón por la estúpida pregunta. – daryl

+0

:). Solo agregué eso a mi respuesta. Sí tu puedes. – Mrchief

3

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.

+1

Quiere decir alcance. ;) – daryl

+0

¿Dónde exactamente me refiero al alcance? – GarlicFries

+0

"Una variable en la función externa es visible para la función interna, pero no al revés". @Brennon – daryl

4

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.

Cuestiones relacionadas