2011-08-02 18 views
6

JSLint aracılığıyla bir komut dosyası çalıştırdım ve parantez yerleşimi ile belirli bir sorun belirledi.Kapanışlar nasıl biçimlendirilmelidir?

ben yazmıştım:

(function(){})(); 

Ve kullanımı önerildi:

(function(){}()); 

merak ediyorum olarak ne hatalar veya sorunlar bu özel değişiklik düzeltmeleri. JSLint'in bir sorun olarak seçilmesinden dolayı, bir kullanıcı için olmalıdır.

Genişletilmiş formlar: o saf stil olan http://www.yuiblog.com/crockford/ tarihinde Crockford göre

(
    function (p) { 
    ...code... 
    } 
)(param); //parameters after the parens 

rakip olduğunu-

(
    function (p) { 
    ...code... 
    }(param) //parameters within the parens 
); 
+2

http://stackoverflow.com/questions/5938802/are-function-and-function-functionally-equal-in/5938845#5938845 – SLaks

+0

@zzzzBov Vay canına, ilk cümlenin ilk cümlesini aşan bir şey okumadınız. SLaks ile bağlantılı olarak cevap verin. Sorunuza tam olarak cevap veren iki sözdizimi arasındaki farkların son derece ayrıntılı bir dökümünü içerir. –

cevap

5

JSLint düzeltmeye çalışıyor spesifik mesele bir hata neden olabilir ; kapanış eksikliği ile ilgilidir Fonksiyon nerede bir işlev bağımsız değişken olarak yorumlanır:

(function A(arg){ 
    // stuff 
}) 

(function B(){ 
    ... 
}); 

tamamen geçerli mi, B arg olarak A geçirilir. Bununla birlikte, bu genellikle kendileri yürütmek ve () izleri unutulduğu anlamına geldiği için amaçlanan durum değildir. Önerilen sözdizimi, yanlışlıkla çalıştığınız şekilde işlevinizi yerine getirmeyi unuttuğunuz herhangi bir karışıklığı ortadan kaldırır.

Değeri için hemen hemen her zaman ilk sözdizimini kullanıyorum; alışkanlık.

0

(Video hatırlayamıyorum, ama başlangıçta doğru olduğunu düşünüyorum) Okumayı kolaylaştırır ve hata veya sorunla ilgili değildir.

Düzenleme:

Ben Yasası III olduğunu düşünüyorum: Ultimate