Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: .:Xx4NG3LxX:. en 27 Noviembre 2020, 04:05 am



Título: [js][duda] como y cuando usar "!function" (para que sirve)
Publicado por: .:Xx4NG3LxX:. en 27 Noviembre 2020, 04:05 am
Hello friends....

He visto varios JavaScripts que incluyen !function, por más que he buscado y buscado no encontré nada. Esperaba que me pudiesen orientar en esto.

¿Es algún tipo especial de función?
¿Cuándo aplicarlo y cuando no?
¿Es la única que hay de ese tipo? (Es decir, ¿no existe otra keyword que sea algo por el estilo?)

Gracias y saludos..


Título: Re: [js][duda] como y cuando usar "!function" (para que sirve)
Publicado por: @XSStringManolo en 27 Noviembre 2020, 13:39 pm
El operador ! es el operador de negación. Algunas veces se utiliza antes de la keyword function para convertirla en una function expression. Si le añades paréntesis se produce la llamada a la función retornando true (porque las function expression llamadas de esta forma retornan undefined y el operador ! (not) retorna un booleando con el valor contrario al especificado. Es decir, si era valor positivo pasa a negativo y si era negativo pasa a positivo. Ej:
La función:
function saludar() { alert("Hola") }
Puedes crearla e invocarla con:
!function saludar() { alert("Hola") }();


La forma más frecuente de realizar esto es utilizando la sintaxis:
(function saludar() { alert("Hola") })();
Utilizando el ! se ahorra un caracter, pero esta forma de hacerlo si retorna el valor de retorno de la función. Si le sumas que puedes utilizar la sintaxis de function arrow de ES6+:
alert( (() => 5 * 5)() );
suma( (numero => numero * 5)(), 8);
suma( (numero => numero * 5)(), (otroNumero => numero * 7)() );

Suele ser bastante práctico para usar como parámetros de otras funciones, crear closures, encapsular el scope, ahorrar código...