4

重複の可能性:
JavaScriptコードに中括弧を配置すると結果が異なる理由

PHPでは、読みやすさのために中括弧を独自の行に配置し、中括弧を閉じに並べることができるようにするという会社のポリシーがあります。したがって:

if (true)
{
    ...
}

ただし、JSでは、ブラウザが誤って解釈する問題が発生した場合に備えて、同じ行に保持する必要があります。

if (true) {
    ...

上記のイタリック体の部分は正当な懸念事項ですか?

PS-この質問はすでにここで行われていると思いますが、私のものと完全に一致する質問は見つかりませんでした。そこにあり、見つからなかった場合はお詫びします。

4

2 に答える 2

13

はい、それは特定のコーナーケースで重要です。

そして、問題は「ブラウザがそれを誤って解釈する」ことではありません。危険な動作は、ECMAScriptの仕様に従って正しいです。この動作を示さなかったJavaScript実装は、仕様に準拠していません。

例。この関数は壊れています:

function returnAnObject {
    return
    {
        foo: 'test'
    };
}

オブジェクトを返すことになっていますが、実際には何も返しません。JavaScriptはそれを次のように解釈します:

function returnAnObject {
    return;
    {
        foo: 'test'
    };
}
于 2010-10-18T15:15:45.057 に答える
4

JSでの解釈は通常、セミコロンのない行がある場合であり、デフォルトでは行末に追加されます。このようなことを避け、読みやすさを向上させるために、中括弧は通常、IF、WHILE、Functionなどと同じ行に追加されます。

JSのこの機能は、私が知る限り、暗黙的なセミコロン挿入と呼ばれます。

于 2010-10-18T15:10:35.210 に答える