2011-10-27 28 views
6

jQuery kaynak böyle bir kapatma sarılır: Bu parametrelerden birisi ihtiyaç vardır neden anlamıyorumNeden jQuery kaynağındaki bu iki parametre nedir?

(function(window, undefined) { 
    //awesome jQuery library code in here 
})(window); 

.

window global bir değişken olduğundan, neden geçirilmesi gerekiyor? Küresel bir parametreden geçirmenin ve aynı isimdeki kapağın içine girmenin amacı nedir?

undefined parametresi nedir? Neden herhangi bir değer geçmedi?

+0

Penceresi bu kapsamda yerel olarak kullanılacaktır, bu da daha hızlı erişilmesini sağlar, bence. – Ibu

cevap

11

bu zaten yanıtlandı eminim ama: window geçen

  • a) kodu sıkıştırma (yani anonim içinde tek harfli değişken adı ile yerine adını gizleyin olanak sağlar işlev) ve b) jQuery yüklendikten sonra herkesin global kapsamda yeniden tanımlanması durumunda, değişkenin kitaplığın tanımlandığı sırada pencere nesnesine başvurmasını sağlar. bağımsız değişken olarak undefined (ama bir değer geçmediğine) dahil

  • değişken munging sağlayan ve undefined değişken yeniden takdirde problemleri önler undefined için aynı şeyi yapar (Evet, JavaScript bu izin verir). o tercüman Genel kapsamda bakmadan önce arayacaktır fonksiyon kapsamında mevcut küresel değişkenler, hem yapar gibi

Ben, bu değişkene başvuruları hızlandırmak gerekiyordu her iki durumda da inanıyoruz. Ama dürüstçe, buradaki performans farkının önemli olduğunu düşünemiyorum - en büyük sorun, küçültüldüğünde daha küçük kodlar üreten değişken isim mashing'idir.

+0

tamamen mantıklı, +1 – Ibu

+0

Eğer 'global' global kapsamda yeniden tanımlanmışsa, içeri girdiğinizde yine de tekrar düşünülmez mi? –

+2

@PeterOlson - daha sonra yeniden tanımlanmıyorsa - jQuery kitaplığı yüklendiğinde bu "pencere" referansını düzeltir, böylece sonraki pencerenin kurnazlarının hiçbir etkisi olmayacaktır. Sanırım kütüphane yüklenmeden önce pencereyi yeniden tanımlarsanız, bu kırılacak, ama sonra ne aldığınızı hak ediyorsunuz :). – nrabinowitz