que - ! ¿Función anterior en javascript?
javascript function que es (3)
Posible duplicado:
¿Qué hace el signo de exclamación antes de la función?
Vi una función formateada como esta hoy por primera vez:
!function(){}();
¿Para qué sirve el signo de exclamación anterior? Asumo que funciona igual que:
(function(){})();
Pero ... ¿qué está pasando aquí?
Lo anterior !
toma la declaración que no se puede analizar y permite que sea analizada por el motor JS, que a su vez devuelve verdadero.
function(){}();
SyntaxError: Unexpected token (
!function(){}();
>>true
Lo he probado, se volvió verdad. La función devuelve undefined
, y !undefined
es verdadero.
!function(){}();
^ ^ ^
C A B
- A.
function(){}
es una función anónima vacía - B.
()
ejecuta la función (A), devolviendoundefined
- C.
!
niegaundefined
, que se hacetrue
Creo que usaron ese truco para un código de golf o un código ofuscado. Es una mala práctica utilizar esa práctica
Pruebe javascript:alert(!function(){}())
en la barra de direcciones de su navegador
Simplemente hace que el analizador de JavaScript lo analice como una expresión, lo cual es necesario para ejecutarlo.