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

も参照してください

チュートリアル:JavaScriptの演算子

リファレンスマニュアル:JavaScriptの演算子