ECMAScript 言語仕様では、乗算演算子が交換可能 (A*B==B*A) であると指定されています。ただし、A または B に代入演算子が含まれている場合、これは当てはまりません。たとえば、ブラウザのコンソールに次のように入力すると:
var x = 1;
(x + 2) * ((x = 4) + 1);
ただし、15が得られます。
var x = 1;
((x = 4) + 1) * (x + 2)
30を与えます。
それとも可換とは、すべての変数がその値に解決されると可換になることを意味しますか? ただし、仕様では、数学的な乗算操作ではなく、「* 演算子」について説明しています。