I get all of the plugins code except for one line, and due to the way search engines work I cant actually search for my question.
The question is what in the hell is this:
(!function($) {/*....*/})(jQuery);
Why does it say !functions($)?? I'm guessing for the same effect of the $.noConflict()
but isn't that why we just use (function($) {/*...*/})(jQuery);
it just wraps the dollar sign to our function block. I am completely aware that I could be way off base here, I'm still intermediate in jQuery/js.
If someone could please enlighten me on the effect of the NOT operator before the function statement, i would greatly appreciate it.
Edit: It would appear that i overlooked bootstrap not having (!function($) ... )
but just being !function($)...
but you guys helped me in realizing it is just an alternative to ()
So there a couple things going on here. Everything is being wrapped in an anonymous function that is executed right away. This is to create a scope for the library so that when the author declares functions and variables they are are not global by default.
With me so far. Ok next thing is the whole ($){...}(jQuery)
thing. What is going on here is the author is passing the jQuery
library into the anonymous wrapper function as a parameter called $
. So in the scope of the anonymous function he can use $
to reference jQuery
as you would expect. This is more of a best practices thing because 99% of the time jQuery is already defined as $
in the global scope, but its considered bad form to refer to global variables within a functions scope, and thus he / she passes it in as a parameter.
Still there? The exclamation mark: there is a rule in Javascript that states the first line of a program MUST be an expression (ie not a function declaration aka statement). By prepending the ! the author is turning the declaration into an expression (that returns false). In this case however I don't think the ! is actually required because the declaration is wrapped in () and executed right away. (A function call is an expression)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With