訳の正確性を保証するものではありませんので必要に応じて原文であるEcma InternationalのECMA-262にある ECMA-262.pdf ( ECMA-262 5.1 Edition )を参照下さい。
訳:2012年04月 webzoit.net
【構文】 AdditiveExpression : MultiplicativeExpression AdditiveExpression + MultiplicativeExpression AdditiveExpression - MultiplicativeExpression
加算演算子は、文字列連結または数値加算の何れかを実行します。 プロダクション
AdditiveExpression : AdditiveExpression + MultiplicativeExpression
は、次のように評価されます。
1. lref は、 AdditiveExpressionを評価した結果とする 2. lval は、 GetValue(lref) とする 3. rref は、 MultiplicativeExpressionを評価した結果とする 4. rval は、 GetValue(rref) とする 5. lprim は、 ToPrimitive(lval) とする 6. rprim は、 ToPrimitive(rval) とする 7. Type(lprim) が、String、または、 Type(rprim) が、Stringである場合、 a. ToString(rprim) によって続く ToString( lprim)を連結した結果であるStringを返す 8. ToNumber(lprim) と ToNumber(rprim) に加算演算子を適用した結果を返す、11.6.3 下段注釈参照
[注釈 1] ステップ 5 と 6 で ToPrimitive を呼ぶ中で提供されるヒントは、何もありません。 Dateオブジェクトを除く全てのネイティブなECMAScriptオブジェクトは、ヒント番号が与えられるかのようにヒントの欠如を扱います。 Dateオブジェクトは、ヒントとなる文字列が与えられるかのようにヒントの欠如を扱います。 ホストオブジェクトは、何らかの他の方法でヒントの欠如を扱う場合があります。 [注釈 2] ステップ 7 と論理AND演算子の代わりに論理OR演算子を使用することによる関係演算子( 11.8.5 )における比較アルゴリズムから成るステップ 3 とでは異なります。
プロダクション
AdditiveExpression : AdditiveExpression - MultiplicativeExpression
は、次のように評価されます。
1. lref は、 AdditiveExpressionを評価した結果とする 2. lval は、 GetValue(lref) とする 3. rref は、 MultiplicativeExpressionを評価した結果とする 4. rval は、 GetValue(rref) とする 5. lnum は、 ToNumber(lval) とする 6. rnum は、 ToNumber(rval) とする 7. lnum と rnum に減算演算子を適用したものを結果として返す、11.6.3 下段注釈参照
+ 演算子は、オペランドの合計を生成する2つの数値型のオペランドに適用する場合、加算を実行します。 - 演算子は、2つの数値オペランドの差を生成する減算を実行します。
加算は、可換性のある演算子ですが、常にそのように想定するというわけではありません。 加算の結果は、『IEEE 754 binary double-precision arithmetic / バイナリ(二進)倍精度演算』の規則を使用して決められます。
- 演算子は、数値型の2つのオペランドに適用する場合に減算を実行し、そのオペランドの差を生成します。左オペランドは、被減数、右オペランドは、減数です。 与えられた数値オペランド a と b において、それは a - b というケースは常に、 a + (-b) と同じ結果を生成します。