una tipos pasar parametros otra imprimir funciones funcion ejercicios desde dentro codigos javascript function self

tipos - pasar variables de una funcion a otra en javascript



¿Puede una función de JavaScript volver a sí misma? (6)

Hay 2-3 maneras. Uno es, como dices, es utilizar arguments.callee . Podría ser la única forma si está tratando con una función anónima que no está almacenada asignada a una variable en algún lugar (que usted sepa):

(function() { return arguments.callee; })()()()().... ;

El segundo es usar el nombre de la función.

function namedFunc() { return namedFunc; } namedFunc()()()().... ;

Y la última es usar una función anónima asignada a una variable, pero debes conocer la variable, así que en ese caso no veo ninguna razón, por qué no puedes simplemente darle un nombre a la función y usar el método anterior.

var storedFunc = function() { return storedFunc; }; storedFunc()()()().... ;

Todos son funcionalmente idénticos, pero el callee es el más simple.

Edit: Y estoy de acuerdo con SLaks; Yo tampoco lo puedo recomendar

¿Puedo escribir una función que se devuelva?

Estaba leyendo alguna descripción sobre cierres ( vea el Ejemplo 6 ) donde una función estaba devolviendo una función, por lo que podría llamar a func()(); como JavaScript válido.

Así que me preguntaba si una función podría volver a sí misma de tal manera que usted pudiera encadenarse a sí misma indefinidamente así:

func(arg)(other_arg)()(blah);

¿Usando arguments objeto, llamante o llamante?


Hay una manera simple de lograr esto haciendo lo siguiente:

let intArr = []; function mul(x){ if(!x){ return intArr.reduce((prev, curr) => prev * curr) } intArr.push(x); return mul; } console.log(mul(2)(4)(2)()); => outputs 16


Incluso clasificador que todo lo anterior es:

f=()=>f



Sí.
Simplemente return arguments.callee;


Sin embargo, es probable que esto resulte en un código muy confuso; No lo recomiendo.


También es posible devolver el argumento de la función auto invocable como

console.log( (function(a) { return a; })(1) ); // returns 1