valor una tipos retornar pasar parametros otra funciones funcion desde codigos anonimas anidadas javascript

tipos - retornar valor de una funcion javascript



Pasar una función como argumento en una función de JavaScript (7)

¿Y qué te gustaría que lograra? Parece que mezcló una declaración de función con una llamada a función.

Si desea pasar otro resultado de llamadas a una función, solo escriba funct(some_array, foo(x)) . Si desea pasar otra función, escriba funct(some_array, foo) . Incluso puede pasar un funct(some_array, function(x) { ... }) llamado función anónima funct(some_array, function(x) { ... }) .

Me preguntaba si esto es legal. ¿Podría tener algo como esto?

function funct(a, foo(x)) { ... }

donde a es una matriz y x es un argumento entero para otra función llamada foo ?

(La idea es tener una función que use un bucle for en la matriz, y llama a esa función en los params para cada elemento de la matriz. La idea es llamarlo así sobre diferentes funciones para que los elementos de dos matrices se multipliquen y luego las sumas se suman juntas. Por ejemplo A[0] * B[0] + A[1] * B[1] ).


Creo que esto es lo que querías decir.

funct("z", function (x) { return x; }); function funct(a, foo){ foo(a) // this will return a }


De hecho, parece un poco complicado, no lo es.

obtener el método como un parámetro:

function JS_method(_callBack) { _callBack("called"); }

Puede dar como un método de parámetro:

JS_method(function (d) { //Finally this will work. alert(d) });


Esta no es la forma de declarar una función con otra función como uno de sus parámetros. Esto es:

function foodemo(value){ return ''hello ''+ value; } function funct(a, foo) { alert(foo(a)); } //call funct funct(''world!'', foodemo); //=> ''hello world!''

Entonces, el segundo parámetro de funct es una reference a otra función (en este caso foodemo ). Una vez que se llama a la función, ejecuta esa otra función (en este caso usando el primer parámetro como entrada).

Los parámetros en una declaración de función son solo etiquetas . Es el cuerpo de la función que les da significado. En este ejemplo, funct fallará si no se proporcionó el segundo parámetro. Así que verificar eso podría verse así:

function funct(a, foo) { if (a && foo && typeof a === ''string'' && typeof foo === ''function''){ alert(foo(a)); } else { return false; } }

Debido a la naturaleza de JS, puede usar una llamada de función directa como parámetro dentro de una llamada de función (con la definición de función correcta):

function funct2(foo){ alert(foo); } funct2(foodemo(''world!'')); //=> ''hello world!''


Lo que has mencionado es legal. Aquí, se llamará a foo(X) y su valor devuelto se servirá como un parámetro del método funct()


Prefiero sugerir crear una variable como a continuación:

var deleteAction = function () { removeABC(); };

y pásalo como un argumento como a continuación:

removeETC(deleteAction);

en el método removeETC ejecuta esto como a continuación:

function removeETC(delAction){ delAction(); }


Si desea pasar una función, simplemente haga referencia por su nombre sin los paréntesis:

function funct(a, foo) { ... }

Pero a veces es posible que desee pasar una función con argumentos incluidos , pero no hacer que se invoque hasta que se invoque la devolución de llamada. Para hacer esto, cuando lo llame, simplemente envuélvalo en una función anónima, como esta:

funct(a, function(){foo(x)});

Si lo prefiere, también puede usar la función apply y tener un tercer parámetro que es una matriz de argumentos, como por ejemplo:

function myFunc(myArray, callback, args) { //do stuff with myArray //... //execute callback when finished callback.apply(this, args); } function eat(food1, food2) { alert("I like to eat " + food1 + " and " + food2 ); } //will alert "I like to eat pickles and peanut butter" myFunc([], eat, ["pickles", "peanut butter"]);