Basitleştirilmiş bir sürüm alırsanız daha anlaşılır olabilir. İlk hazır fonksiyon uyarıdan çok fazla şey yapmıyor. Diğer ikisi ilginç.
İşlevlerin kapsamı vardır; bu, bir değişkeni içte kullandığınızda, hiyerarşide bulunana kadar gider.
İkinci hazır işlevinizde, , Hi!
numaralı telefona kadar çıkacak ve işlev içinde çalışmaya başlarsanız, başka bir $
olacaktır. Bir değişken (function($) {
) olarak geçirilir - bir daha yakın olan bir tanıma sahiptir, çünkü
Ancak, üçüncü hazır bloğunda $
Hi!
gitmeyecek. Bu $
, jQuery'nin hazır özelliği nasıl uygulandığından jQuery işlevi (yani $ == jQuery
numaralı işlevde) olacaktır.
Yani:
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
});
Şimdi soru diğer kütüphaneler ile çatışma hakkındadır. Diğer kütüphaneler (örneğin prototip) ayrıca kütüphaneyi çağırmanın uygun bir kısayolu olduğu için $
sembolünü kullanır. Sağladığınız son hazır fonksiyonunu kullanırsanız, emin olabilirsiniz, bu fonksiyonun içinde $
jQuery, jQuery kendisini bu işleve (ilk argüman olarak) aktardığı için başvuracaktır.
İkinci hazır işlevde, $
da örneğin Prototip olarak ayarlanmış olabilir ve jQuery'yi $
ile aradığınızdan emin değilsiniz. Örneğinizde, Hi!
ve jQuery değil. Prototip olması durumunda aynı şeydir. Düşünün: Öte yandan
// 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 $
});
@ Beefyhalo - Eğer '$', jQuery() 'işleyicisi içinde zaten varsa özel bir anlam kazanıyor mu? Yani, argüman 'jQuery (function (argüman) {...}) içinden geçmiş mi? (Hala) etkin bir şekilde" $ "ile aynı şeyi çözüyor mu? – dopatraman
jQuery kendini jQuery işleyicisindeki ilk bağımsız değişkene atar. İlk argümanın adı ne olursa olsun, jQuery buna atanacaktır. Yani jQuery (function (argüman) {... ',' jQuery (function ($) {... 've' jQuery (function (someOtherArgument) {... ', hepsi anlamındadır. argüman === $ === someOtherArgument' – beefyhalo
@ Beefyhalo - teşekkürler, bu açık şeyler yardımcı oldu – dopatraman