JavaScriptの演算子の優先順位
演算子優先順位(Operator Precedence)は、算術表現式中の演算の実行順序を説明します。
乗法 (*) と除法 (/) の優先順位は、加法 (+) と減法 (-) より高いです。
例
伝統の数学と同様に、まず乗法演算を行います:
let x = 100 + 50 * 3;
丸括弧を使用する場合、まず括弧内の計算を行います:
let x = (100 + 50) * 3;
優先順位が同じ演算(例えば、* と /)は左から右に計算されます:
let x = 100 / 50 * 3;
演算子優先順位値
括弧内の表現式は、他の部分の表現式よりも前に計算され、関数は結果が他の部分の表現式に使用される前に実行されます:
優先順位 | 演算子 | 説明 | 例 |
---|---|---|---|
18 | ( ) | 表現式グループ | (100 + 50) * 3 |
17 | . | メンバーに属する | person.name |
17 | [] | メンバーに属する | person["name"] |
17 | ?. | オプションの鎖 ES2020 | x ?. y |
17 | () | 関数呼び出し | myFunction() |
17 | new | 引数付きの新しい | new Date("June 5,2022") |
16 | new | 引数なしの新しい | new Date() |
増量演算子後記増は前記増よりも前に実行されます。 |
|||
15 | ++ | 後記増 | i++ |
15 | -- | 後記減 | i-- |
14 | ++ | 前記増 | ++i |
14 | -- | 前記減 | --i |
NOT 演算子 |
|||
14 | ! | 論理非 | !(x==y) |
14 | ~ | ビット非 | ~x |
一元演算子 |
|||
14 | + | 一元加 | +x |
14 | - | 一元減 | -x |
14 | typeof | データ型 | typeof x |
14 | void | 空の評価 | void(0) |
14 | delete | 属性削除 | delete myCar.color |
算術演算子指数演算は乗法の前に実行されます。 乗除法は加減法の前に実行されます。 |
|||
13 | ** | 指数演算 ES2016 | 10 ** 2 |
12 | * | 乗 | 10 * 5 |
12 | / | 除 | 10 / 5 |
12 | % | 除法の余り | 10 % 5 |
11 | + | 加 | 10 + 5 |
11 | - | 減 | 10 - 5 |
11 | + | 連結 | "Bill" + "Gates" |
シフト演算子 |
|||
10 | << | 左シフト | x << 2 |
10 | >> | 右シフト(符号付き) | x >> 2 |
10 | >>> | 右シフト(無符号) | x >>> 2 |
関係演算子 |
|||
9 | in | オブジェクトの属性 | "PI" in Math |
9 | instanceof | オブジェクトのインスタンス | x instanceof Array |
比較演算子 |
|||
9 | < | 小さい | x < y |
9 | <= | 小さいか等しい | x <= y |
9 | > | 大きい | x > y |
9 | >= | 大きくて等しい | x >= Array |
8 | == | 等しい | x == y |
8 | === | 厳しく等しい | x === y |
8 | != | 異なる | x != y |
8 | !== | 厳しく異なる | x !== y |
ビット演算子 |
|||
7 | & | ビット演算(および) | x & y |
6 | ^ | ビット演算(異或) | x ^ y |
5 | | | ビット演算(または) | x | y |
論理演算子 |
|||
4 | && | 論理および | x && y |
3 | || | 論理または | x || y |
3 | ?? | null値結合 ES2020 | x ?? y |
条件(三元)演算子 |
|||
2 | ? : | 条件 | ? "はい" : "いいえ" |
代入演算子代入は他の操作の後に実行されます。 |
|||
2 | = | シンプル代入 | x = y |
2 | : | コロン代入 | x: 5 |
2 | += | 加法代入 | x += y |
2 | -= | 減法代入 | x -= y |
2 | *= | 乗法代入 | x *= y |
2 | **= | 指数代入 | x **= y |
2 | /= | 除法代入 | x /= y |
2 | %= | 取余代入 | x %= y |
2 | <<= | 左シフト代入 | x <<= y |
2 | >>= | 右シフト代入 | x >>= y |
2 | >>>= | 無符号右シフト | x >>>= y |
2 | &= | ビットおよび代入 | x &= y |
2 | |= | ビットまたは代入 | x |= y |
2 | ^= | ビット異或代入 | x ^= y |
2 | &&= | 論理および代入 | x &= y |
2 | ||= | 論理または代入 | x ||= y |
2 | => | アロー | x => y |
2 | yield | 一時停止 / 恢復 | yield x |
2 | yield* | デリゲート演算子 | yield* x |
2 | ... | 展開演算子 | ... x |
1 | , | カンマ | x , y |