Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: Ali Baba en 9 Marzo 2017, 05:16 am



Título: Funciones y Condicionales en javascript
Publicado por: Ali Baba en 9 Marzo 2017, 05:16 am
Código
  1. if(x(a,b,m)){
  2.  function x (a,b,m){
  3.  m = parseInt(a) * parseInt(b);
  4.  return m;
  5. }}
  6.  
  7. if(x(a,b,s)){
  8.   function x (a,b,s){
  9.   s = parseInt(a) + parseInt(b);
  10.  return s;
  11. }
  12. }
  13.  
  14. 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?


Título: Re: Funciones y Condicionales en javascript
Publicado por: 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



Título: Re: Funciones y Condicionales en javascript
Publicado por: Ali Baba en 9 Marzo 2017, 05:28 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


Título: Re: Funciones y Condicionales en javascript
Publicado por: engel lex en 9 Marzo 2017, 05:43 am
tienes que recordar que el programa corre con un "cursor" secuencial, así que lo primero que verá será la linea 1 y verá

Código
  1. if(x(a,b,m)){

así que intentará resolver

Código
  1. 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

Código
  1. function suma_de_cuadrados(funcion_callback){
  2.    var cuadrado_a, cuadrado_b;
  3.    cuadrado_a = funcion_callback(4);
  4.    cuadrado_b = funcion_callback(9);
  5.    return cuadrado_a+cuadrado_b
  6. }
  7. function otro(parametro){
  8.   return parametro*parametro
  9. }
  10. console.log(suma_de_cuadrados(otro));
  11.  

esto el interprete lo convertirá en

Código
  1. function suma_de_cuadrados(){
  2.    var cuadrado_a, cuadrado_b;
  3.    cuadrado_a = otro(4);
  4.    cuadrado_b = otro(9);
  5.    return cuadrado_a+cuadrado_b
  6. }
  7. function otro(parametro){
  8.   return parametro*parametro
  9. }
  10. console.log(suma_de_cuadrados());
  11.  

observa que "otro" se pasa sin los parentesis cuando se pasa como callback, ya que se está pasando como variable, si pusieras

Código
  1. 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



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


Título: Re: Funciones y Condicionales en javascript
Publicado por: ThinkByYourself en 9 Marzo 2017, 10:02 am
Hay que diferenciar entre:

Código
  1. var f = function() {};
  2. function ff() {};

Y:

Código
  1. var a = f("texto", var2, var2);
  2. 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


Título: Re: Funciones y Condicionales en javascript
Publicado por: 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!


Título: Re: Funciones y Condicionales en javascript
Publicado por: engel lex en 9 Marzo 2017, 17:50 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