ECMAScript JavaScript JScriptActionScript演算子の優先順位
演算子の優先順位によって、式の操作が実行される順序が決まります。優先順位の高い演算子が最初に実行されます。
JavaScriptデモ:式-演算子の優先順位
console.log(3 + 4 * 5); // 3 + 20
// expected output: 23
console.log(4 * 3 ** 2); // 4 * 9
// expected output: 36
let a;
let b;
console.log(a = b = 5);
// expected output: 5
関連性
关联性决定了拥有相同优先级的运算符的执行顺序。考虑下面这个表达式:
a OP b OP c;
左の関連付け(左から右)は、左の部分式に括弧(a OP b)OP cを追加することと同等であり、右の関連付け(右から左)はOP(b OP c)と同等です。代入演算子は正しく結合しているので、次のように書くことができます。
a = b = 5;
その結果、aとbの値は両方とも5になります。これは、代入演算子の戻り結果が代入演算子の右側の値であるためです。具体的なプロセスは次のとおりです。bが5に割り当てられ、次にaがb = 5の戻り値(5)に割り当てられます。 。
例
3 > 2 && 2 > 1
// return true
3 > 2 > 1
// 返回 false,因为 3 > 2 是 true,并且 true > 1 is false
// 加括号可以更清楚:(3 > 2) > 1
要約表
次の表では、すべての演算子を優先順位に従って高(20)から低(1)まで並べています。
優先度 | 操作タイプ | 関連性 | オペレーター |
---|---|---|---|
21 | 括弧 | 該当なし | (…) |
20 | メンバーアクセス | 左から右へ | …。… |
カウントされるメンバーアクセス | 左から右へ | …[…] | |
新規(パラメータリスト付き) | 該当なし | 新着 … ( … ) | |
関数呼び出し | 左から右へ | …(…) | |
オプションのチェーン(ts、draft esでサポート) | 左から右へ | ?。 | |
19 | 新規(パラメータリストなし) | 右から左へ | 新着 … |
18 | ポストインクリメント(後の演算子) | 該当なし | …++ |
ポストデクリメント(後の演算子) | …- | ||
17 | 論理否定 | 右から左へ | !… |
ビット単位ではありません | 〜… | ||
単項加算 | +… | ||
単項減算 | -… | ||
プレインクリメント | ++… | ||
事前デクリメント | -… | ||
typeof | typeof… | ||
ボイド | ボイド… | ||
削除 | 削除… | ||
待つ | 待って… | ||
16 | パワー | 右から左へ | …***… |
15 | 乗算 | 左から右へ | …*… |
分割 | …/… | ||
モジュロ | …%… | ||
14 | 添加 | 左から右へ | …+… |
減算 | …-… | ||
13 | 左へのビットシフト | 左から右へ | …<<… |
ビットシフト右 | …>>… | ||
符号なし右シフト | …>>>… | ||
12 | 未満 | 左から右へ | …<… |
以下 | …<=… | ||
以上 | …>>… | ||
以上以上 | …> =… | ||
に | … in … | ||
instanceof | … instanceof … | ||
11 | 等号 | 从左到右 | … == … |
非等号 | … != … | ||
全等号 | … === … | ||
非全等号 | … !== … | ||
10 | 按位与 | 从左到右 | … & … |
9 | 按位异或 | 从左到右 | … ^ … |
8 | 按位或 | 从左到右 | … | … |
7 | 逻辑与 | 从左到右 | … && … |
6 | 逻辑或 | 从左到右 | … || … |
5 | 空值合并 | 从左到右 | … ?? … |
4 | 条件运算符 | 从右到左 | … ? … : … |
3 | 赋值 | 从右到左 | … = … |
… += … | |||
… -= … | |||
… **= … | |||
… *= … | |||
… /= … | |||
… %= … | |||
… <<= … | |||
… >>= … | |||
… >>>= … | |||
… &= … | |||
… ^= … | |||
… |= … | |||
… &&= … | |||
… ||= … | |||
… ??= … | |||
2 | yield | 从右到左 | yield … |
yield* | yield* … | ||
1 | 展开运算符 | n/a (不相关) | ... … |
0 | 逗号 | 从左到右 | … , … |