2

if 文のルールを思い出せなかったので、12.5 節を見ましたが、中括弧が必要かどうかはまだわかりませんでした。では、Ecmascript 5.1 のどこで、if ステートメントで左中括弧を使用できないと言及されているのでしょうか?

4

1 に答える 1

5

セクション 12.5 にある if ステートメントの構文は次のとおりです。

IfStatement : 
     if ()ステートメントelseステートメント 
    if ()ステートメント

見た目からは中括弧は必要ありませんが、ステートメントが正確に何であるかを明確にする必要があります。この構文は、セクション 12 にあります。

声明 :
    ブロック
    変数ステートメント
    空のステートメント
    式ステートメント
    Ifステートメント
    反復ステートメント
    続行ステートメント
    Breakステートメント
    返品明細書
    Withステートメント
    Labelledステートメント
    Switchステートメント
    スローステートメント
    TryStatement
    Debuggerステートメント

セクション 12.1 をもう少し掘り下げると、ブロック ステートメントの定義が見つかります。

ブロック : 
     { StatementList opt  } 

中括弧を見つけましたが、これは必須ということですか? 答えはノーだ。ステートメントの構文を調べると、コロンに続く各要素はステートメントと見なされるため、if ステートメント構文の有効な部分と見なされます。以下は、有効な if ステートメントの実際の例です。

// if ( Expression ) ReturnStatement
if (true) 
    return false;

// if ( Expression ) Block
if (true) {
    return false;
}

// if ( Expression ) TryStatement
if (true) try {
    return false;
} catch (e) {
    return e;
}

// if ( Expression ) EmptyStatement
if (true) ;

// if ( Expression ) IfStatement
if (true)
    if (false)
        return false;
于 2012-08-24T05:02:58.653 に答える