訳の正確性を保証するものではありませんので必要に応じて原文であるEcma InternationalのECMA-262にある ECMA-262.pdf ( ECMA-262 5.1 Edition )を参照下さい。
訳:2012年04月 webzoit.net
【構文】 AssignmentExpression : ConditionalExpression LeftHandSideExpression = AssignmentExpression LeftHandSideExpression AssignmentOperator AssignmentExpression AssignmentExpressionNoIn : ConditionalExpressionNoIn LeftHandSideExpression = AssignmentExpressionNoIn LeftHandSideExpression AssignmentOperator AssignmentExpressionNoIn AssignmentOperator : *= /= %= += -= <<= >>= >>>= &= ^= |= の何れか1つ
【セマンティックス】 AssignmentExpressionNoIn プロダクションは、ConditionalExpression と AssignmentExpressionを含む代わりにConditionalExpressionNoIn と AssignmentExpressionNoInを含んで評価される場合を除き、AssignmentExpressionプロダクションと同じ方法で評価されます。
プロダクション
AssignmentExpression : LeftHandSideExpression = AssignmentExpression
は、次のように評価されます。
1. lref は、LeftHandSideExpressionを評価した結果とする 2. rref は、AssignmentExpressionを評価した結果とする 3. rval は、 GetValue(rref) とする 4.次の条件が全て trueである場合、SyntaxError例外を投げる(スローする) ・ReferenceであるType(lref) が、true ・IsStrictReference(lref) が、 true ・Type(GetBase(lref)) が、環境レコード ・GetReferencedName(lref) が、 "eval" または "arguments"の何れか 5. PutValue(lref, rval) を呼ぶ 6. rval を返す
[注釈] strictモードのコード内に代入が現れる場合、その LeftHandSide (左辺)については、未解決の参照を評価してはいけません。 ReferenceError例外とする場合には、代入について投げます(スローします)。 LeftHandSide はまた、属性値 {[[Writable]]:false}を伴うデータプロパティ、属性値 {[[Set]]:undefined}を伴うアクセサプロパティ、値falseを持つ[[Extensible]]内部プロパティであるオブジェクトの存在しない(non-existent)プロパティなどについては参照しない場合があります。 これらのケースについては、TypeError例外が投げられます(スローされます)。
AssignmentOperatorが、上記で示された演算子の1つを表す @= と @ である場合、 プロダクション
AssignmentExpression : LeftHandSideExpression AssignmentOperator AssignmentExpression
は、次のように評価されます。
1. lref は、LeftHandSideExpressionを評価した結果とする 2. lval は、 GetValue(lref) とする 3. rref は、AssignmentExpressionを評価した結果とする 4. rval は、 GetValue(rref) とする 5. r は、 lval と rval に演算子 @ を適用した結果とする 6.次の条件が全て trueである場合、SyntaxError例外を投げる(スローする) ・ReferenceであるType(lref) が、 true ・IsStrictReference(lref) が、 true ・Type(GetBase(lref)) が、 Environment Record(環境レコード) ・GetReferencedName(lref) が、 "eval" または "arguments"の何れか 7. PutValue(lref, r) を呼ぶ 8. r を返す
[注釈] 11.13.1の注釈参照