訳の正確性を保証するものではありませんので必要に応じて原文であるEcma InternationalのECMA-262にある ECMA-262.pdf ( ECMA-262 5.1 Edition )を参照下さい。
訳:2012年04月 webzoit.net
【構文】 Block : { StatementListopt } StatementList : Statement StatementList Statement
【セマンティックス】 プロダクション Block : { } は、次のように評価されます。
1.return (normal, empty, empty)
プロダクション Block : { StatementList } は、次のように評価されます。
1.StatementListを評価した結果を返す
プロダクション StatementList : Statement は、次のように評価されます。
1. s は、Statementを評価した結果とする 2.例外が投げられた(スローされた)場合、V は例外である return (throw, V, empty) とする(スローされた例外が何もないかのように現在の処理を実行) 3. s を返す
プロダクション StatementList : StatementList Statement は、次のように評価されます。
1. sl は、StatementListを評価した結果とする 2. sl が、中途完了(an abrupt completion)である場合、 slを返す 3. s は、Statementを評価した結果とする 4.例外が投げられた(スローされた)場合、V は例外である return (throw, V, empty) とする(スローされた例外が何もないかのように現在の処理を実行) 5. s.value が、emptyである場合、 V = sl.value とし、それ以外の場合、 V = s.value とする 6.return (s.type, V, s.target)
[注釈] StatementListの値を確保する上記アルゴリズムのステップ 5 と 6 は、StatementList内で最後の値を生成したStatementの値です。 例えば、次は、全て値 1 を返す eval 関数を呼びます。
eval("1;;;;;") eval("1;{}") eval("1;var a;")