I apologize for my stupid question, I am not good at javascript and angularjs. I've been referencing the code of some projects, and I'm really confused about this, what it actually is !function(a,b,c){}(x,y,z). I have never seen it before. I am not good at javascript nor angularjs. Thanks for all the help!
!function (e, n, t) {
"use strict";
// code
}(window, angular, jQuery)
CodePudding user response:
It's a hacky way to immediately execute an anonymous function. If you were to define it normally (line starting with function
, then it would immediately hoist the function as a function statement and force you to call it normally. Since the ! is in front of it, that lets the compiler evaluate it as a function expression, which can be invoked immediately. The exclamation mark here is the boolean not
. Parenthesis or a plus sign would also work.
This would be equivalent code:
(e,n,t) => { /** */ }(window, angular, jQuery);
as would
(function (e,n,t) { /** */ })(window, angular, jQuery);
since the parenthesis will make the line be evaluated as an expression as well.
The anonymous function is being defined, and then called with the parameters window, angular, jQuery
, which become e,n,t
inside the function body.
Side note: I would not recommend writing functions like this, since it's uncommon syntax
CodePudding user response:
it just simply tell the js to ignore this function and
it make it undefined Like This:
function Demo(){
console.log('log something');}
OutPut Will Be :
log something
But If You Put A !
Before The Function The Result Would Be:
Demo is not defined