when looking at the minified Sizzle code, I noticed that it begins like this:
!function(a){//...
}(window)
Why is there an exclamation point at the beginning?
I thought that !
was the not
operator.
Thank you.
Edit:
when looking at the minified Sizzle code, I noticed that it begins like this:
!function(a){//...
}(window)
Why is there an exclamation point at the beginning?
I thought that !
was the not
operator.
Thank you.
Edit:
!function(a){/* ... */}();
Using an unary operator to invoke an IIFE is common practice. That's a common shorthand for:
(function(a){/* ... */}());
or:
(function(a){/* ... */})();
You can also substitute the not unary operator with any other unary operator:
-function(a){ /* ... */ }();
+function(a){ /* ... */ }();
/* ... etc. */
!function() {}()
doing !function(){}
won't call it –
Wiggs (function Name () { ; }) ()
isn't valid, the "normal" funciton statement (function name () { ; }
) most people use is just a shortcut for var name = function () { ; }
. –
Boot (function Name () { ; }) ()
be valid? It is. –
Orlantha !
does not invoke the function. It's purpose is to make the parser treat the function definition like an expression, not a statement. –
Orlantha var func1 = function func2 () { ; }
assigns the function to func1
as well as func2
, and both are visible inside the current scope, doesn't it? –
Boot +
and -
operators for this since they're overloaded as binary operators as well. So if you omit a semicolon on the previous line, it can give an undesired result. The unary operators that are not overloaded are best, like !
, void
, ~
, etc. –
Reest gives a good explaination for function invocation https://github.com/airbnb/javascript/issues/44#issuecomment-13063933
!function () {}();
is equivalent to
(function(){})();
except the author is saving 1 byte of code.
In many cases, it's about saving bytes.
!function aaa(){}()
!function bbb(){}();
is the same as this:
!function aaa(){}()
;(function bbb(){})();
notice the ";" in that last bit. That is defensive, as it protects your code a bit from runaway js that might preceed it.
funny, I asked this same question some time ago:
Came across a convention I've never seen. What does it do? !function
great reference on it: What does the exclamation mark do before the function?
:
) is often used to evaluate variable expansions. –
Boot © 2022 - 2024 — McMap. All rights reserved.
!function(){...return bool;}()
– Invitingtrue
orfalse
would do better, yes. – Boot