訳の正確性を保証するものではありませんので必要に応じて原文であるEcma InternationalのECMA-262にある ECMA-262.pdf ( ECMA-262 5.1 Edition )を参照下さい。
訳:2012年04月 webzoit.net
【構文】 WithStatement : with ( Expression ) Statement
with 文は、現在の実行コンテキストの語彙的な環境に生成したオブジェクトについてオブジェクト型環境レコードを追加します。 その場合、引数とした語彙的な環境を使って文を実行します。 最後にそれは元の語彙的な環境を復元します。
【セマンティックス】 プロダクション
WithStatement : with ( Expression ) Statement
は、次のように評価されます。
1. val は、Expressionを評価した結果とする 2. obj は、 ToObject(GetValue(val)) とする 3. oldEnv は、実行中の実行コンテキストのLexicalEnvironmentとする 4. newEnv は、引数として obj と oldEnv を渡すことによってNewObjectEnvironmentを呼んだ結果とする 5. newEnv の provideThis フラグに true を設定 6. 実行中の実行コンテキストのLexicalEnvironmentに newEnv を設定 7. C は、Statementを評価した結果とするが、評価中に例外が投げられる(スローされる)場合、 V が例外である場合、 C は、 (throw, V, empty)とする(、もし、投げられる(スローされる)例外がない場合のように現在の結果を実行する) 8.実行中の実行コンテキストのLexicalEnvironmentに oldEnv を設定 9. C を返す
[注釈] 通常、中途完了(abrupt completion)、例外如何に関わらず、操作上、どんなに組み込み文が残ったとしてもLexicalEnvironmentは、常に元の状態に復元されます。
strictモードのコードは、WithStatementに含まれない場合があります。 このようなコンテキスト内でのWithStatementの出現は、SyntaxErrorとして扱われます。