inazuma code :演算子
inazuma code では、JavaScript に似た演算子をサポートしています。
ここでは、算術・論理・比較・三項・null 合体演算子の使い方と注意点を説明します。
算術演算子
| 演算子 | 説明 |
|---|---|
+ | 加算 |
- | 減算 |
* | 乗算 |
/ | 除算 |
% | 剰余 |
+x / -x | 単項プラス/マイナス |
++x / x++ | 前置/後置インクリメント |
--x / x-- | 前置/後置デクリメント |
例:
1 + 2 * 3 // 7(乗算が先に評価される)
(1 + 2) * 3 // 9(括弧で優先順位を変更)
-5 % 3 // -2(負数の剰余)
x++; // 2(後置:返り値は元の値、x は 3 に更新)
++x; // 4(前置:更新後の値を返す)
論理演算子
| 演算子 | 説明 |
|---|---|
&& | AND(両辺が真なら真) |
|| | OR(いずれかが真なら真) |
! | NOT(真偽を反転) |
短絡評価:
false && ...の右辺は評価されないtrue || ...の右辺は評価されない
返却値について:
-
x && yxが falsy な値ならばそのままxを返します。xが truthy な値ならばyを評価してその結果を返します。
-
x || yxが truthy な値ならばそのままxを返します。xが falsy な値ならばyを評価してその結果を返します。
例:
false && error() // false(error() は呼ばれない)
0 && foo() // 0(foo() は呼ばれない)
"foo" && bar // bar の評価結果
true || foo() // true(foo() は呼ばれない)
"" || "default" // "default"
null || getValue() // getValue() の評価結果
比較演算子
| 演算子 | 説明 |
|---|---|
== | 型変換ありの等価比較 |
=== | 型変換なしの厳密等価比較 |
!= | 型変換ありの不等比較 |
!== | 型変換なしの厳密不等比較 |
< / > | 大小比較 |
<= / >= | 以上/以下比較 |
型変換の例:
1 == "1" // true (数値と文字列の型変換あり)
1 === "1" // false (型が異なるため false)
true == 1 // true
true === 1 // false
[] == false // true (空配列は false と等価)
{} == false // false (オブジェクトは false と等価ではない)
三項演算子
条件に応じて 2 つの値のうちどちらかを返します。
条件式 ? 値1 : 値2
例:
true ? "yes" : "no" // "yes"
false ? "yes" : "no" // "no"
// 他の式と組み合わせ
(true ? 5 : 10) + 1 // 6
null 合体演算子(??)
左辺が null の場合に右辺を返します。
false や 0 は null とはみなされません。
例:
null ?? "default" // "default"
"value" ?? "default" // "value"
false ?? "default" // false
(null ?? 1) + 5 // 6
Truthy / Falsy 値の一覧
| 判定 | 値の例 |
|---|---|
| Falsy | false 0 0.0 "" "0" [] null |
| Truthy | true 1 1.0 "foo" "1" [0] {} x => x |
演算子の優先順位
| 優先順位 | 演算子 |
|---|---|
| 1 ※最優先 | () |
| 2 | . ?. -> ?-> |
| 3 | ++ -- ! ... |
| 4 | * / % |
| 5 | + - |
| 6 | < <= > >= |
| 7 | == != === !== |
| 8 | && |
| 9 | || |
| 10 | .. |
| 11 | ?? |
| 12 | ?:(三項演算子) |
| 13 | |> |
| 14 | = |