需要帮助了解Twitter bootstraps插件(jQuery)

Need help understanding Twitter bootstraps plugins (jQuery)

除了一行,我得到了所有的插件代码,由于搜索引擎的工作方式,我实际上无法搜索我的问题。

问题是这到底是什么:

1
(!function($) {/*....*/})(jQuery);

为什么这么说!功能($)?? 我猜测$.noConflict()的效果相同,但这不是我们只使用(function($) {/*...*/})(jQuery);它只是将美元符号包装到我们的功能块的原因。 我完全知道我可以离开这里,我仍然是jQuery / js的中间人。

如果有人可以在函数语句之前请教我关于NOT运算符的效果,我将非常感激。

编辑:我似乎忽略了没有(!function($) ... )而只是!function($)...的bootstrap
但你们帮助我意识到它只是()的替代品


所以这里有一些事情发生。一切都被包含在一个立即执行的匿名函数中。这是为库创建一个范围,以便当作者声明函数和变量时,默认情况下它们不是全局的。

和我一起到目前为止。好的接下来是整个($){...}(jQuery)的事情。这里发生的是作者将jQuery库作为名为$的参数传递给匿名包装函数。因此,在匿名函数的范围内,他可以使用$来引用jQuery,如您所料。这更像是一种最佳实践的东西,因为99%的时间jQuery已经在全局范围内定义为$,但它被认为是在函数范围内引用全局变量的不良形式,因此他/她将其传递给作为参数。

还在那儿?感叹号:Javascript中有一条规则,规定程序的第一行必须是一个表达式(即不是函数声明aka语句)。通过前置!作者将声明转换为表达式(返回false)。在这种情况下,我不认为!实际上是必需的,因为声明包含在()中并立即执行。 (函数调用是一个表达式)