if(x(a,b,m)){
function x (a,b,m){
m = parseInt(a) * parseInt(b);
return m;
}}
if(x(a,b,s)){
function x (a,b,s){
s = parseInt(a) + parseInt(b);
return s;
}
}
document.write(x(2,2,m));
Aquí expresó que si colocó el siguiente callback x(a,b,m) entonces se ejecute al función, y si colocó este x(a,b,m) haga lo mismo pero con otra función, ahora mi duda es, las dos funciones se pueden llamar iguales?
Le he puesto el parámetro m a una x(a,b,m) refiriéndome a la multiplicación, ya que ese parámetro va a ser igual a la multiplicación de los otros dos y a su vez es el return de la función para que se pueda mostrar, y con otra x(a,b,m) ya lo probé y no me sale nada... se puede hacer la idea que expongo?
primero
ese codigo no corre, no están definidas las variables a, b, m ni s en el scope general, así como tampoco x... así que apenas el cursor llegue a linea 1 fallará, igual que en la 7 y en la 14
segundo
si la funcion x en linea 1 retorna algo difente de 0 simplemente se hará una sobrecarga a la función x y listo, igual para el if de la linea 7
Cita de: engel lex en 9 Marzo 2017, 05:25 AM
primero
ese codigo no corre, no están definidas las variables a, b, m ni s en el scope general, así como tampoco x... así que apenas el cursor llegue a linea 1 fallará, igual que en la 7 y en la 14
segundo
si la funcion x en linea 1 retorna algo difente de 0 simplemente se hará una sobrecarga a la función x y listo, igual para el if de la linea 7
Me quieres decir que cuando yo pongo if( x(a,b,s)) no está siendo tomado como un callback de una funcion sino como variables no definidas?
Lo que quiero es que según el callback de la función se ejecute. Si el callback es x(a,b,s) se ejecute la función esa y si es x(a,b,m) se ejecute esa función... a y b son los número y m,s es el valor de la operación que se va a retornar dependiendo el parámetro que se elija.
· No hacer doble post
>aquí las reglas del foro (http://foro.elhacker.net/reglas.htm)
-Engel Lex
tienes que recordar que el programa corre con un "cursor" secuencial, así que lo primero que verá será la linea 1 y verá
if(x(a,b,m)){
así que intentará resolver
x(a,b,m)
con lo que sabe, en este punto conoce algunos objetos (document, window, entre otros) pero ninguno x, a, b, m
esto no es un callback, un callback es cuando se pasa una función como parametro a otra, esperando que la otra la llame cuando la necesite
ejemplo
function suma_de_cuadrados(funcion_callback){
var cuadrado_a, cuadrado_b;
cuadrado_a = funcion_callback(4);
cuadrado_b = funcion_callback(9);
return cuadrado_a+cuadrado_b
}
function otro(parametro){
return parametro*parametro
}
console.log(suma_de_cuadrados(otro));
esto el interprete lo convertirá en
function suma_de_cuadrados(){
var cuadrado_a, cuadrado_b;
cuadrado_a = otro(4);
cuadrado_b = otro(9);
return cuadrado_a+cuadrado_b
}
function otro(parametro){
return parametro*parametro
}
console.log(suma_de_cuadrados());
observa que "otro" se pasa sin los parentesis cuando se pasa como callback, ya que se está pasando como variable, si pusieras
console.log(suma_de_cuadrados(otro()));
el interprete intentaría ejecutar primero que nada otro para obtener su respuesta y ese valor pasarlo a suma_de_cuadrados
esto es parte de la respuesta a tu pregunta si las variables pueden almacenar funciones
Cita de: Mago Diesan en 9 Marzo 2017, 05:28 AM
Lo que quiero es que según el callback de la función se ejecute. Si el callback es x(a,b,s) se ejecute la función esa y si es x(a,b,m) se ejecute esa función... a y b son los número y m,s es el valor de la operación que se va a retornar dependiendo el parámetro que se elija.
lo que dices no tiene pie ni cabeza, lo que quieres es que la función antes de evaluar, evalue que debe evaluar para ejecutarlo y luego evaluarlo por primera vez
Hay que diferenciar entre:
var f = function() {};
function ff() {};
Y:
var a = f("texto", var2, var2);
var b = ff("texto", var1, var2);
Lo primero son funciones, y lo segundo son llamadas a funciones.
Los primeros serán funciones seguro.
Los segundos, no se sabe. Pueden ser cualquier cosa. Aunque aquí serán undefined.
Saludos
El código del principio functiona cambiando function a() {} por var a = function() { } porque el hecho de poner var implica crear variables globales.
Salu2!
Cita de: eLank0 en 9 Marzo 2017, 17:46 PM
El código del principio functiona cambiando function a() {} por var a = function() { } porque el hecho de poner var implica crear variables globales.
Salu2!
no, no lo hace lee mi primer comentario