Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: Ali Baba en 15 Mayo 2017, 16:48 pm



Título: Una función en javascript
Publicado por: Ali Baba en 15 Mayo 2017, 16:48 pm
Una vez vi en javascript algo así:

Código
  1. ! function(){}();

Y hasta el día de hoy no entiendo nada.


Título: Re: Una función en javascript
Publicado por: #!drvy en 15 Mayo 2017, 17:01 pm
Es una funcion que se ejecuta a si misma (opcionalmente, con los parámetros que le des).

Código
  1. var a = function(){
  2.    return 'hola';
  3. }();
  4.  
  5.  
  6. var b = function(a,b){
  7.    return a-b;
  8. }(5,3);
  9.  
  10. console.log(a); // hola
  11. console.log(b); // 2

PD: Si te preguntas por el uso que se le pueda dar,
http://stackoverflow.com/questions/17058606/why-using-self-executing-function

Saludos


Título: Re: Una función en javascript
Publicado por: erandros en 18 Mayo 2017, 16:50 pm
Hora de demistificar:

Primero, estemos de acuerdo en que en javascript, podés declarar una función sin nombre.

Código
  1. function() { console.log('asd'); }
Podés, si querés, asignarla a una variable e invocar esa función luego
Código
  1. var myFunction = function() { console.log('asd'); }
  2. myFunction();
  3.  

Pero también, en el mundo libre de javascript, podés hacer cosas locas, como declarar una función sin nombre, e invocarla inmediatamente, esto es exactamente igual que el ejemplo anterior (sin el console.log) pero en una línea:

Código
  1. function(){}()

Lamentablemente, ese código no corre, por ciertas cuestions de sintaxis de javascript, para que corra tenés dos opciones:

Código
  1. (function(){})() //envolver la declaración de la función entre paréntesis
Código
  1. !function(){}() //anteponer un signo de exclamación

Ahora...

Por qué querrías declarar una función y llamarla inmediatamente? Por qué no poner el código así nomás en un script de html total se va a invocar de una.

Por una cuestión de prolijidad. Cuando definís una variable fuera de cualquier función, es visible globalmente. Cualquier otra parte del código puede acceder a esa variable. Y eso puede hacer que tu código sea poco robusto.

Pero, oh magia, cuando ponés variables dentro de funciones, esas variables solo se pueden acceder dentro de esas funciones. Y eso nos ayuda a modularizar el código.



Título: Re: Una función en javascript
Publicado por: dato000 en 18 Mayo 2017, 21:20 pm
Una vez vi en javascript algo así:

Código
  1. ! function(){}();

Y hasta el día de hoy no entiendo nada.

Debe ser una función recursiva, son horrendas, no entiendo los que dicen que son recomendables en terminos de rendimiento, sea en el lenguaje que sea, son demoledores para comer memoria así sea solo para una simple suma o imprimir un string.

No uses esa basura, ni te molestes en estudiarla, es mala praxis, y una perdida de tiempo y energia.