訳の正確性を保証するものではありませんので必要に応じて原文であるEcma InternationalのECMA-262にある ECMA-262.pdf ( ECMA-262 5.1 Edition )を参照下さい。
訳:2012年04月 webzoit.net
【構文】 VariableStatement : var VariableDeclarationList ; VariableDeclarationList : VariableDeclaration VariableDeclarationList , VariableDeclaration VariableDeclarationListNoIn : VariableDeclarationNoIn VariableDeclarationListNoIn , VariableDeclarationNoIn VariableDeclaration : Identifier Initialiseropt VariableDeclarationNoIn : Identifier InitialiserNoInopt Initialiser : = AssignmentExpression InitialiserNoIn : = AssignmentExpressionNoIn
変数ステートメントは、10.5 で定義したように生成される変数を宣言します。 変数は、生成される場合、Undefined(未定義)として初期化されます。 イニシャライザーを伴う変数は、その変数が生成される際ではなく、VariableStatementが実行される際に当該AssignmentExpressionの値を関連付けられます。
【セマンティックス】
プロダクション VariableStatement : var VariableDeclarationList ; は、次のように評価されます。
1.VariableDeclarationListを評価 2.return (normal, empty, empty)
プロダクション VariableDeclarationList :VariableDeclaration は、次のように評価されます。
1.VariableDeclarationを評価
プロダクション VariableDeclarationList : VariableDeclarationList , VariableDeclaration は、次のように評価されます。
1.VariableDeclarationListを評価 2.VariableDeclarationを評価
プロダクション VariableDeclaration : Identifier は、次のように評価されます。
1.識別子(Identifier)内にあるものと文字の並びが同じものを含むString値を返す
プロダクション VariableDeclaration : Identifier Initialiser は、次のように評価されます。
1. lhs は、11.1.2で定義したようにIdentifier(識別子)を評価した結果とする 2. rhs は、Initialiser(イニシャライザー)を評価した結果とする 3. value は、 GetValue(rhs) とする 4. PutValue(lhs, value) を呼ぶ 5.識別子(Identifier)内にあるものと文字の並びが同じものを含むString値を返す
[注釈] VariableDeclaration(変数宣言)のString値は、 for-in 文(12.6.4)の評価の中で使用されます。
VariableDeclarationが、文を伴って内側にネストされたり、VariableDeclaration内の識別子が文のオブジェクト型環境レコードを伴うバインディングオブジェクトのプロパティ名と同名である場合には、ステップ4は、当該識別子のVariableEnvironmentバインディングへの代わりにプロパティに値を関連付けるでしょう。
プロダクション Initialiser : = AssignmentExpression は、次のように評価されます。
1.VariableEnvironmentを評価した結果を返す
VariableDeclarationListNoIn、VariableDeclarationNoIn、InitialiserNoInは、VariableDeclarationList、VariableDeclaration、Initialiser 、AssignmentExpressionのそれぞれ含む代わりにVariableDeclarationListNoIn、VariableDeclarationNoIn、InitialiserNoIn、AssignmentExpressionNoInを含んで評価される場合を除き、VariableDeclarationList、VariableDeclaration、Initialiserプロダクションと同じ方法で評価されます。
VariableDeclaration や VariableDeclarationNoIn が、strictコード内に現れたり、当該識別子が "eval" や "arguments"である場合には、SyntaxErrorです。