2012-06-28 17 views
10

どこにいても、最近、1TBSがJavaScriptのAllmanよりも好まれているとのコメントを渡し、AllmanはJavaScriptに危険な意味を持つと言いました。JavaScriptのオールマンスタイルの危険な意味

有効な声明ですか?もしそうなら、なぜですか?

+1

ASIの影響を受けるステートメントがさらにありますが、仕様を確認してください。 @Esailijaが[この回答](http://stackoverflow.com/questions/2846283/what-are-the-rules-for-javascripts-automatic-semicolon-insertion/2846298#2846298)に投稿したり、私はASIのルールをまとめました...ああ、ちょうど楽しみのために、次のテストに合格してみてください:[ASI Test](http://asi.qfox.nl/) – CMS

+0

も参照してください[重要なのですか?(http://stackoverflow.com/q/3004496/1048572) – Bergi

答えて

19

returnので後LineTerminatorを持つことができない。

return 
{ 


}; 

return;として扱われる(undefinedを返す)の代わりに、return {};

がよりためAutomatic Semicolon Insertion (ASI)のルールを見る(オブジェクトを返します)。

+0

多分それはASIに関連していると言って、答えにプラスですか? –

+4

私は本当にjavascriptが好きに成長しましたが、これはまだ本当に変わっています – NimChimpsky

+0

@FlorianMargaine – Esailija

2

ステートメントによりますと思います。例えば、中括弧を改行すると、return文が壊れる可能性があります。 More info here

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

// vs. 

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

それを入手してください。ありがとう!!! –

3

有効な文です。

JavaScriptのエンジンには、必要に応じてセミコロンを挿入するASI(Automatic Semicolon Insertion)があります。 「必要な場合」はあいまいです。時にはうまく動作しないことがあります。 the rulesを参照してください。だから、

、他の回答に言ったように:

return 
{ 
}; 

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

だから、それはreturn文のためお勧めしません。

ただし、ガイドラインで関数宣言にAllmanスタイルを使用することをお勧めします。私はそれが何かを知っています。

関連する問題