mozilla

演算子の優先順位

概要

演算子の優先順位は、演算子が評価される順番を決定します。より高い優先順位の演算子は最初に評価されます。

よくある例:

3 + 4 * 5 // 23 を返す

乗算演算子 ("*") は加算演算子 ("+") より高い優先順位を持つので、最初に評価されます。

結合性

結合性は、同じ優先順位の演算子を処理する順番を決定します。例えば、次のような式を考えてみましょう。

a OP b OP c

左結合性 (左から右) とはこれを (a OP b) OP c というように処理するという意味であり、対して右結合性 (右から左) はこれを a OP (b OP c) というように解釈するという意味です。代入演算子は右結合性なので、あなたは、

a = b = 5;

と書くことで、ab が値 5 を得るという期待通りの結果を得ることができます。これは代入演算子が代入した値を返すためです。まず b に 5 がセットされます。そして ab の値がセットされるのです。

以下の表は優先順位の最も高いもの (1) から最も低いもの (18) の順に並べられています。

優先順位 演算子の種類 結合性 各演算子
1 メンバ 左から右 .
[]
new 右から左 new
2 FIXME: 関数呼び出し 左から右 ()
3 インクリメント n/a ++
デクリメント n/a --
4 論理 NOT 右から左 !
ビットごとの NOT 右から左 ~
単項の + 右から左 +
符号反転 右から左 -
typeof 右から左 typeof
void 右から左 void
delete 右から左 delete
5 乗算 左から右 *
除算 左から右 /
モジュロ(剰余) 左から右 %
6 加算 左から右 +
減算 左から右 -
7 ビットシフト 左から右 <<
>>
>>>
8 大小関係 左から右 <
<=
>
>=
in 左から右 in
instanceof 左から右 instanceof
9 同値関係 左から右 ==
!=
===
!==
10 ビットごとの AND 左から右 &
11 ビットごとの XOR 左から右 ^
12 ビットごとの OR 左から右 |
13 論理 AND 左から右 &&
14 論理 OR 左から右 ||
15 条件 右から左 ?:
16 yield 右から左 yield
17 代入 右から左 =
+=
-=
*=
/=
%=
<<=
>>=
>>>=
&=
^=
|=
18 カンマ 左から右 ,

ドキュメントのタグと貢献者

Contributors to this page: Potappo, teoli, yyss, ethertank
最終更新者: teoli,
サイドバーを隠す