Llamar función dentro de otra función desde fuera en javascript

publicado por: Anonymous

Se podrá llamar a la función ale() que esta dentro de otra función.

Por ejemplo:

function prueba(){
    function ale(){
        alert('alerta!!');
    }
}

Y luego llamarla

ale();

solución

En tu ejemplo, lo que puedes hacer es:

_x000D_

_x000D_

function prueba() {_x000D_
  function ale() {_x000D_
    alert('alerta!!');_x000D_
  }_x000D_
  return ale; //<- añadir un return_x000D_
}_x000D_
_x000D_
prueba()(); //hace el alert_x000D_
prueba();   //no hace nada

_x000D_

_x000D_

_x000D_

Esto se llama currying.

Como ejemplo más práctico, puedes sumar:

_x000D_

_x000D_

function a(x) {    _x000D_
  function b(y) { _x000D_
    return x + y; _x000D_
  }_x000D_
  return b;       _x000D_
}_x000D_
console.log(a(3)(4)); //7_x000D_
_x000D_
var sumar4 =  a(4); //la variable sumar4 ahora es una funcion_x000D_
console.log( sumar4(5)); //sumar4 ya le pasamos el 4 antes, ahora suma 5 = 9

_x000D_

_x000D_

_x000D_


UPDATE: (por el comentario del OP)

Para más de una función puedes hacer uso de la Reflexión.

A prueba le pasas la función que quieres llamar, en string.

_x000D_

_x000D_

function prueba(fun) {_x000D_
  var funciones = {};_x000D_
  funciones.ale1 = function() {_x000D_
    alert('1');_x000D_
  };_x000D_
_x000D_
  funciones.ale2 = function() {_x000D_
    alert('2');_x000D_
  };_x000D_
_x000D_
  //llamada usando reflexion donde fun es el string del nombre del metodo_x000D_
  return funciones[fun](); _x000D_
}_x000D_
_x000D_
prueba("ale2"); //hace el alert 2

_x000D_

_x000D_

_x000D_

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *