Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: @XSStringManolo en 4 Octubre 2019, 04:11 am



Título: [javascript] Opinion sobre este código? return en función.
Publicado por: @XSStringManolo en 4 Octubre 2019, 04:11 am
Código
  1. function dividir(num1, num2)
  2. {
  3.  
  4.   if ( num1 !=0 && num2 !=0 && num1>=num2)
  5.   {
  6.   return num1/num2;
  7.   }
  8.  
  9.  
  10. return;
  11. }
  12.  
  13. var resultado = dividir(parseInt(prompt("Pon Numero")), parseInt(prompt("Pon Numero")));
  14.  
  15. if(resultado)
  16. {
  17. alert(resultado);
  18. }
  19.  
  20. else
  21. {
  22. alert("No se puede dividir");
  23. }

En la línea 10 hago return explícito. Me surgen varias dudas.
Hay alguna diferencia entre que escriba el return o no lo escriba en esta línea 10? En teoría lo que hago es retornar un undefined, que es una representación de un valor no definido. Si borro la línea 10 del código, yo lo que me esperaría por lógica es que se retornase un null. Es decir, que se retornase una representación de un valor vacio.

1) ¿Por qué se retorna un undefined si yo no espero que la funcion me retorne un valor? No es más coherente que se retorne un null haciendo referencia a que no se retorna ningún valor en vez de hacer referencia a que se espera un valor que no se definió?

2) ¿Sirve el return de la línea 10 en este caso de algo? Es diferente al return implícito en la función al finalizar las instrucciones del cuerpo sin encontrarse ningún return? Si hago un break; tras el break se hace el return implícito? Es el return simplemente un break más eficiente o tiene alguna funcionalidad?

3) Es una buena práctica utilizar el undefined en un if como un false? Por ejemplo en la línea 15 podría poner if(!resultado){document.write("No se puede dividir");}


Título: Re: [javascript] Opinion sobre este código? return en función.
Publicado por: #!drvy en 6 Octubre 2019, 08:23 am
Citar
1) ¿Por qué se retorna un undefined si yo no espero que la funcion me retorne un valor? No es más coherente que se retorne un null haciendo referencia a que no se retorna ningún valor en vez de hacer referencia a que se espera un valor que no se definió?

Retorna undefined porque no se ha definido qué retornar. Puedes intentar discutirlo con quien pensó que seria buena idea hacerlo así.. pero la verdad es que poco vas a hacer xD.


Citar
2) ¿Sirve el return de la línea 10 en este caso de algo? Es diferente al return implícito en la función al finalizar las instrucciones del cuerpo sin encontrarse ningún return? Si hago un break; tras el break se hace el return implícito??

No creo que sea diferente. Y tampoco sirve. Yo creo que deberias devolver null. No se hace un return implícito, simplemente se continua ejecutando el código hasta que decide que no hay nada que retornar.


Citar
Es el return simplemente un break más eficiente o tiene alguna funcionalidad?

break y return son cosas diferentes. Si, puedes usar return en vez de break, pero no puedes compararlos pues tienen una funcionalidad diferente.


Citar
3) Es una buena práctica utilizar el undefined en un if como un false? Por ejemplo en la línea 15 podría poner if(!resultado){document.write("No se puede dividir");}

Ten cuidado.

Código
  1. console.log(undefined == false); // false
Código
  1. console.log(!undefined); // true

https://www.ecma-international.org/ecma-262/5.1/#sec-11.9.3

Saludos