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

时间:2012-02-06 09:08:43

标签: jquery twitter twitter-bootstrap

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

问题是这到底是什么:

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

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

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

修改:我似乎忽略了没有 (!function($) ... ) 的引导程序,只是 !function($)... 但是你们帮助我意识到它只是()

的替代品

1 个答案:

答案 0 :(得分:3)

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

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

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