2011-11-26 9 views
8

Olası Çoğalt: jQuery kaynak kodu gördüğüm
why do we need to pass in window and undefined into this jquery plugin?Geçiş penceresi ve hemen çağrılmış anonim bir işlev tanımsız. Niye ya?

yapar:


(function(window, undefined){ 

... 

}(window)) 

Birinin nerede, neden yararlıdır tanımsız dahil etmek olduğunu olsun "undefined" önce değiştirmek için. Ancak pencere değiştirilemez. Bildiğim kadarıyla, kullanılmasına bile gerek yok, değil mi? Bu nasıl yararlı olabilir?

+0

Olası kopya: [http://www.stackoverflow.com/questions/6400632/why-do-we-need-to-pass-in-window-and-undefined-into-this-jquery-plugin] (http://www.stackoverflow.com/questions/6400632/why-do-we-need-to-pass-in-window-and-undefined-into-this-jquery-plugin) –

cevap

16

Mikro en iyi duruma getirme. Yerel bir değişken olarak global bir değişkenden daha hızlı bir şekilde yerel olarak daha hızlı bir şekilde .

Ayrıca daha iyi minimize eder. Şimdi işlev parametresini w'a küçültebilir ve window.setTimeout yerine w.setTimeout vb. Kullanabiliriz.

Daha az bayt = daha iyi

+0

Ben minification şey alamadım. "Window.document" yazmanız bile gerekmiyor. Sadece "belge" yazabilirsin, değil mi? Ve neden yerel değişken olarak pencere daha hızlı? –

+5

Yerel değişkene global değişkenden daha hızlı erişilir. 'belge' tek başına, yorumlayıcıyı global kapsamda incelemeye zorlar. '' window '' (fonksiyon (pencere, undefined) {'sadece bir ** yerel ** parametre adıdır,' '' (function (wnd, undefined) {'. window) sadece işlevi otomatik olarak yürütürken parametre olarak ilettiğinizden (sonunda - parantez arasında) .Aynı isimde aldatılmasın.Fonksiyonun parametre listesindeki 'window' olarak rasgele bir dize küçültmek suretiyle uzunluğunu azaltabilir ve örneğin 'W' olarak nitelendirebiliriz. –

+0

İlginç. Bu bir performans meselesidir. Yani, "w.document" ifadesini çağırmak, anormal fonksiyonun içinde "document" yazmasından daha hızlıdır. –

9

değil yalnızca ne Raynos yayınlanmıştır ama aynı zamanda sayfanızdaysa veya başka bir şekilde sayfaya erişmek diğer kütüphanelerde böyle bir şey yapmak insanlardan kodunuzu korur: başka bir deyişle

undefined = true; 

, ortak küresel değişkenleri veya nesneleri yeniden tanımlanması gibi aptal şeyler yapıyor diğer insanlardan korur.

+0

Evet, yazımda zaten undefined neden dahil edilmesi gerektiğini anladım. –

+3

NP, bilemeyecek bir başkası için burada kaldı. – Bert

+0

Not için teşekkürler :) –

İlgili konular