2012-06-28 19 views
10

Nerede olduğunu hatırlayamıyorum, fakat son zamanlarda, kullanıcının 1TBS'nin JavaScript'deki Allman'dan daha çok tercih edildiğini söylediğini ve Allman'ın JavaScript'te tehlikeli etkileri olduğunu söyledi.Allman stilinin JavaScript içerisindeki tehlikeli etkileri

Geçerli bir açıklama mı? Öyleyse neden?

+1

ASI'den daha fazla ifade var, özellikleri kontrol edin. @Esailija'nın gönderdiği bağlantıyı veya [bu yanıt] 'a bir bakın (http://stackoverflow.com/questions/2846283/what-are-the-rules-for-javascripts-automatic-semicolon-insertion/2846298#2846298), Orada ASI kurallarını özetledim ... Ah, ve sadece eğlence için, * aşağıdaki testi geçmek için * deneyin: [ASI Testi] (http://asi.qfox.nl/) – CMS

+0

Ayrıca bakınız [Bu blok stili gerçekten mi önemli?] (http://stackoverflow.com/q/3004496/1048572) – Bergi

cevap

19

return yüzden sonra LineTerminator olamaz:

return 
{ 


}; 

return; olarak kabul edilir (undefined dönüş) yerine return {};

fazla Automatic Semicolon Insertion (ASI) için kuralları (Bkz bir nesneyi döndürmek).

+0

Belki ASI ile ilgili olduğunu söylemek, cevaba bir artı mıdır? –

+4

Gerçekten javascript gibi büyüdüm, ama bu hala çok garip – NimChimpsky

+0

@FlorianMargaine Bana bir dakika ver – Esailija

2
return { 
    a: "A", 
    b: "B" 
}; 

// vs. 

return // Semicolon automatically inserted here! Uh oh! 
{ 
    a: "A", 
    b: "B" 
} 
+0

bunu alır. Teşekkürler!!! –

3

Geçerli bir ifadedir.

JavaScript'in motorları, satır dönüşlerinde gerekirse bir noktalı virgül ekleyen ASI (Otomatik Noktalı Ekleme) adlı makineye sahiptir. "Gerekirse" belirsizdir; bazen çalışır ve bazen yapmaz. Bakınız the rules.

Yani, gibi diğer yanıtlar söyledi:

return 
{ 
}; 

// Is read by the JavaScript engine, after ASI, as: 
return; // returns undefined 
{ // so this is not even executed 
}; 

Yani return tablolar için tavsiye edilmez. Ancak, yönergeleriniz Allman stilini işlev bildirimleri için öneriyorsa, bu tamamen doğrudur. Bazılarını biliyorum.

İlgili konular