Possible Duplicate:
What does the exclamation mark do before the function?
What does !function ($) { $(function(){ }) }(window.jQuery) do?
what is the meaning of “!function($){}(window.jQuery)” ?
<script type="text/javascript">
!function($){
//some codes here
}(window.jQuery)
</script>
this js orginal code url:http://twitter.github.com/bootstrap/assets/js/bootstrap-dropdown.js
The
!at the beginning of the line turns your function into a function expression, it has the basically same effect¹ as the more popular IIFE forms:Then it is immediately invoked by passing
window.jQueryas the$argument. This is useful to be able to use$referencing jQuery inside the function independently of the page having jQuery innoConflictmode or not.This approach is very common (and recommended) when developing plugins for 3rd-party use.
Little more explained: Function declarations can’t be part of an expression, hence when you put the function keyword inside a
()or precede it with a unary operator, it is interpreted as a function expression.¹ There is a subtle difference between
(function(){}())and!function(){}(): while the parentheses simply evaluate the function to a function object in the form of a function expression, the unary!will do the same thing and flip the return value of the function expression. As you’re not assigning this value to anything, it will simply be discarded.It is 1 byte in load time vs the cost of a
!operation in execution time. Both of these shouldn’t take more than a fraction of milli/microsecond. It is mostly a matter of coding style preference.