2010-12-07 15 views
7

¿Cómo puedo utilizar el rendimiento en javascript¿Cómo puedo utilizar el rendimiento en javascript

function hello1() { 

    function hello2() { 

     if (condition) { 
      return; // How can I exit from hello1 function not hello2 ? 
     } 

    } 

} 
+0

quieres decir salir de hello2 no hello1 –

+0

Quiero salir de hello1 – faressoft

+2

Supongo que esto depende de cómo estés llamando a hello2, hello2 no se puede ejecutar hasta que hayas recuperado un objeto de hello1. Creo que tendrás que publicar un ejemplo más preciso de lo que intentas lograr en lugar de una pseudo pregunta. – superfro

Respuesta

15

No puede. Esa no es la forma en que return funciona. Sale solo de la función actual.

Ser capaz de regresar de una función más allá de la pila de llamadas rompería el encapsulation ofrecido por la función (es decir, no debería necesitar saber de dónde se está llamando, y debería depender de quien llama decidir qué hacer si la función falla). Parte del punto de una función es que la persona que llama no necesita saber cómo se implementa la función.

Lo que probablemente quiere decir algo como esto:

function hello1() { 
    function hello2() { 
     if (condition) { 
      return false; 
     } 
     return true; 
    } 

    if (!hello2()) { 
     return; 
    } 
} 
2

No use internas-funciones para controlar el flujo del programa. La capacidad de tener funciones internas promueve el contexto del alcance y la accesibilidad.

Si su función externa depende de su función interna para algo de lógica, simplemente use su valor de retorno para proceder en consecuencia.

2

saltando la pila de esa es probablemente una mala idea. podrías hacerlo con una excepción controlamos el flujo de ejecución de esa manera en un solo lugar en el trabajo, porque es una solución directa para un código mal diseñado.

+1

Incluso con excepciones, depende de una de las funciones más arriba en la pila de llamadas manejarlo. Eso requeriría que todas las llamadas a 'hello1' se envuelvan en un bloque' try ... catch' ... algo desordenado ;-) – Cameron

Cuestiones relacionadas