タイトル: 演算子
本稿は JavaScript の演算子に関する記事です。演算子とは、データに対して計算や比較などを行うための記号のことです。一般的なものとして代入演算子、算術演算子、比較演算子、論理演算子などがあります。
子ページから個別の演算子を選択してください。
本ページの子ページ
演算子の分類
| 分類 | 主な記号 | 用途 |
|---|---|---|
| 算術演算子 | + - * / % ** | 四則演算・剰余・べき乗 |
| 代入演算子 | = += -= *= /= %= | 値の代入・複合代入 |
| 比較演算子 | === !== == != < > <= >= | 真偽判定 |
| 論理演算子 | && || ! | 論理 AND / OR / NOT |
| ビット演算子 | & | ^ ~ << >> | 2進数ビット操作 |
| インクリメント / デクリメント | ++ -- | 1 ずつ加減 |
| 条件 (三項) | cond ? a : b | 1 行の条件分岐 |
| ぬる合体 | ?? | null / undefined のとき右辺を使う |
| オプショナルチェイン | ?. | 途中が null/undefined ならエラーにせず undefined |
| スプレッド / レスト | ... | 展開・可変長引数 |
| typeof / instanceof | typeof x / x instanceof Y | 型判定 |
| カンマ | , | 左から評価し最後の値を結果に |
| delete | delete obj.k | プロパティ削除 |
== と === の違い
| 式 | 結果 | 説明 |
|---|---|---|
0 == "0" | true | 型変換あり比較 |
0 === "0" | false | 厳密比較 (型も含めて一致が必要) |
null == undefined | true | 緩い比較では同一視 |
null === undefined | false | 厳密比較では別物 |
NaN === NaN | false | Number.isNaN(x) で判定する |
新しいコードでは原則 === / !== を使います。
論理演算子と短絡評価
|
// AND は最初に falsy になった値を返す |
OR (||) と ぬる合体 (??) は似て見えますが、空文字や 0 を「値あり」として扱いたい場合は ?? を使います。
オプショナルチェイン
|
const user = { name: "Taro" }; |
演算子の優先順位 (抜粋)
| 優先度 | 演算子 |
|---|---|
| 高 | () 関数呼出 / [] プロパティ参照 / . |
| ↑ | ! typeof ++ -- (単項) |
** (べき乗) | |
* / % | |
+ - | |
< <= > >= instanceof in | |
=== !== == != | |
&& | |
|| ?? | |
| 低 | = / += / 三項 ? : / カンマ |
迷ったら明示的に括弧を付けるのが安全です。
注意点
- 常に
===を使う。==は予想外の真理値になりがち +は文字列連結も兼ねる:1 + "2"は"12"- 小数演算に
0.1 + 0.2 !== 0.3の浮動小数点誤差がある - インクリメント前置・後置で評価タイミングが違う (
++iとi++) deleteは変数ではなくプロパティ削除専用 (旧スタイル変数では効かない)- 厳密モード (
'use strict';) / モジュールでは挙動が一部厳しくなる
関連
- 親カテゴリ: 文法 (JavaScript)
- 子ページ: 代入演算子 / 算術演算子 / 比較演算子
- JavaScript 本体: JavaScript