如果你采用简化版本,则可能更容易理解。 第一个现成的职能并不超出警惕。 其余两个是有趣的。
职能范围很广,这意味着,如果你在内部使用一个变量,那么,在确定这一变量之前,它就将进入等级。
在您的第二次准备职能中,<>>$> > 至<>>。 如果你开始履行职务,则没有其他<>>$>。
However, in the third ready block, the $
will not go to the Hi!
because it has a definition that is closer - the one passed as an argument (function($) {
). This $
will be the jQuery function (i.e. in that function $ == jQuery
) as this is how jQuery s ready feature is implemented.
因此:
var $ = Hi! ;
jQuery(function() {
alert( $ = + $); // in this scope, $ will refer to the Hi!
});
jQuery(function($) { // the $ here will shadow the $ defined as Hi!
alert( $ = + $); // in this scope, $ will refer to jQuery
});
现在,你的问题是与其他图书馆的冲突。 其他图书馆(例如原型)也使用$的文号,因为它是召集图书馆的方便捷径。 如果你利用你提供的最后一次现成职能,你可以sure,在该职能范围内,$
将提及“j Query”作为“j Query”转而担任这一职务(作为第一个论点)。
在第二个现成职能中,$
可能也已归入原型,例如,你无法确定你是用$/code>。 举例来说,它为<代码>。 Hi!
,而不是j Query。 如果是这样的话,它就属于同样的事情。 考虑:
// Prototype is loaded here, $ is referring to Prototype
jQuery(function() {
$( selector ).addClass( something ); // Oops - you re calling Prototype with $!
});
另一方面:
// Prototype is loaded here, $ is referring to Prototype
jQuery(function($) { // this $ is shadowing Prototype s $, this $ is jQuery
$( selector ).addClass( something ); // Yay - you re calling jQuery with $
});