2012-02-09 32 views
10

Douglas Crockford'un Code Conventions for JavaScript belgesine bakıyorum ve o, var s alfabetik ve satır başına bir olması gerektiğini söylüyor. Ancak Tek satır 'var' bildirimleri mi, yoksa satır başına bir mi?

var a;     // array of class names 
var c = node.className; // the node's classname 
var i;     // loop counter 

, jsLint (ve jsHint) standart tek bir satırda bunları ilan etmek olduğunu ve bu hatayı

çok fazla var ifadeleri

Crockford yoludur yapılırsa atar Bu nedenle, jsLint bunu böyle yapmak istiyor.

var a, c = node.className, i; 

Bu benim için oldukça çelişkili görünüyor ve programlama genel kapsamda muhtemelen oldukça dakikada olsa herhalde yanlış olsun önce bu hakkı almak için umuyorum.

JavaScript varsayı bildirirken genel olarak kabul edilen uygulama nedir?

+8

Her satıra bir oy veriyorum. – Zenexer

+2

Satır başına bir başka avukat; Okuması çok daha kolay, IMO. –

+1

Alfabetik olarak ayarlamanız gerekiyorsa, işlevin çok büyük olduğunu düşünürüm ... –

cevap

13

LINT, tek bir var bildirim bildirimi ister ancak birden çok satıra yayılabilir.

var a, b, c; 

veya

var a, 
    b, 
    c; 

tek açıklama istediği nedeni değişkenleri yerel kapsama ait olduğuyla ilgili herhangi bir karışıklığı önlemek için olduğunu.Tek bir var deyimiyle, tüm yerel kapsamlı değişkenler kapsam dahilinde tek bir konumda bulunur ve herkes ne olduğunu görmek için kodu hızlı bir şekilde okuyabilir.

Ayrıca, JavaScript kaldırma mekanizması zaten yürütmeden önce orada hareket ettiğinden, bu bildirim ifadesinin kapsamın en üstünde olması önerilir. Kodun, kapsamın en üstünde bu ifadeyi beklemek için yazarak, kaldırma mekanizması beklenmedik davranışlara neden olamaz.

0

Birden fazla değişken bildirebilir ve bunları aynı satırda atayabilirsiniz. Bu kişisel tercih meselesi.

2

argüman ancak çok daha önemli kabul standart ve üzerindedir ekip sürekli kullanmak zorunda çoğunlukla bir stil tartışmadır.

3

İki yol da yanlıştır, ancak genellikle kod satırının başında tek satır stili bildirimlerini kullanmayı tercih ederim. En önemli şey tutarlı tutmaktır. Örnek:

function() { 
    var foo = "bar", 
     number = 123, 
     etc = "..."; 

    // stuff.. 
} 
+1

Teşekkürler @ jdc0589 bu yardımcı oluyor. Sanırım her iki yolu da bildiğim gibi "yanlış yap" dememeliydim. Genel olarak kabul edilen yönteme daha çok ateş ediyorum, ki bu cevaplardaki kanıtlarla, bu yaklaşımı kesin olarak işaret ediyor. –

3

Bir kombinasyon bile iyi. Bu tamamen tercihe bağlı. Bir ekiple çalışıyorsanız, tercihinizi sorun ve tutarlı tutun.

var a, 
    c = node.className, 
    i; 
+0

ah evet, bu çok güzel. Her iki yöne de uyar. JsLint'i ihlal etmiyor ve yine de Crockford'un standartlarına uyuyor. –

2

Diğer bir seçenek (o kullandığım biri) 'dir:

var a = ..., 
    b = ..., 
    c, d; 

Bu Ben beri açıkça I (ilan ve hepsi bir şekilde bağlantılı oldukları ediyorum kaç değişkenleri yapar onları aynı alanda ilan ettikleri için, temelde her zaman). Ayrıca, zaten değerleri olan ve olmayanlar arasındaki değişkenleri ayırt etmeye yardımcı olur. Bu, sadece çok nadir olarak atamadıkça değişkenleri beyan ederim dedi.

Farklı bir standart izleyen bir kodla çalışmazsam, bu benim yaptığım şeydir. Ve bu en önemli şey: projenizin tarzını takip edin. Aksi takdirde, tercihinize göre gidin. Gerçekten umursamıyorsanız, stilimi kullanın;)

+3

"temizliyor"? Ben takip etmem. Hızlı bir bakışta üç değişken bulunduğundan, üç değişken bulunduğunu gösterir. Ancak, daha yakından incelendiğimizde aslında dördünüzü beyan ediyorsunuz. Dört değişkenin açık olduğunu bildirmek için üç satır kullanmayı düşünüyor musunuz? –

İlgili konular