演算子ってなんだろう??
例えば、3X5を計算しようとしても、Xという記号は利用できません。キーボードにもないこの掛け算、プログラム上では*を利用しています。割り算は/、余りは%で算出します。
また、検索のときによく見ることもできる、論理和、論理積(○○と△△のどちらも、どちらか、という演算)の記号もandやorでなく、&&や||を利用しています。 こんな感じの計算式でのお約束記号や、論理演算式、その他演算記号がたくさ〜ん存在します。
これは、JavaScriptに限らずC、C++、Javaなど他の言語も同様です。
それではここで、JavaScriptで利用する演算子の一覧を載せておきます。
♪演算子一覧♪
| 種類 |
演算子 |
| 算術演算 |
+ - * / % |
| 代入演算 |
= += -= *= /= %= |
| ビット演算 |
<< >> >>>
& ^ | >>== <<== >>>== |
インクリメント デクリメント |
++ -- |
| 論理演算 |
&& || ! |
| 比較 |
== > < >= <=
!= |
| 文字列演算 |
+ += |
| その他 |
void() new ?: [] ()
typeof()
|
これらの演算子には、優先順位というものがあります。 ここでは、優先順位とそれら演算子の処理方向を一覧にします。この色の文字は各演算子の説明です。
処理方向:←(右の値が左の値にかかります)→(左の値が右の値にかかります)
| 優先順位 |
演算子 |
処理方向 |
| 高 |
()関数呼び出し []配列要素参照 .オブジェクトフィールド参照 |
→ |
↑ ↓ |
!論理否定 ++インクリメント --デクリメント void()void演算 newオブジェクト生成 typeof()typeof演算 |
← |
| *乗算 /除算 %剰余 |
→ |
| +加算 -減算 |
→ |
| << >> >>> ビットシフト |
→ |
| < <= > >= 比較 |
→ |
| == != 比較 |
→ |
| &ビットAND |
→ |
| ^ビットXOR |
→ |
| |ビットOR |
→ |
| &&論理AND |
→ |
| ||論理OR |
→ |
| ?:条件演算 |
→ |
| = += -= *= /= &= <<= >>=
>>>= &= ^= |= 代入演算 |
← |
| 低 |
,カンマ演算子 |
→ |
★ちょっと休憩・表の見方★ 優先順位は数学の世界でも同じですね。 y = a * x + b だと、a *
xが先に乗算されて、bが加算されます。
また、足し算を先にする場合は、
y = a *(x + b)
と書きます。これは、()の優先順位が一番高いからということを踏まえて上の表をみてみてください。。
では、各サンプルを置いておきますのでスクリプトと結果値を比べながらご堪能くださいませ。
算術演算子サンプル
<sciprt language = "javascript">
//aという変数に5を代入しています
a = 5;
//bという変数にaと2を加算したものを代入しています。
b = a + 2;
//cという変数にbと2を減算したものを代入しています。
c = b - 2;
//dという変数にcと2を乗算したものを代入しています。
d = c * 2;
//eという変数にdと2を除算したものを代入しています。
e = d / 2;
//fという変数にeと2の剰余を代入しています。
f =e % 2;
//gの初期値に2を代入し、+=で2を代入します。(g = g + 2と同じ意味です)
g = 2;
g += 2;
//hの初期値に2を代入し、-=で2を代入します。(h = h - 2と同じ意味です)
h = 2;
h -= 2;
//iとjいう変数にpをインクリメントさせたものを代入します。
//インクリメントとは、+=1という意味で、前に書くか後に書くかで処理の順序が変わります。
p = 5;
i = p++;
j = ++p;
//kとmいう変数にqをデクリメントさせたものを代入します。
//デクリメントとは、-=1という意味で、前に書くか後に書くかで処理の順序が変わります。
q = 5;
k = q--;
m = --q;
</script>
ビット演算子サンプル
<script language = "javascript">
//aという変数に22と11のビットANDを代入しています。
a = 22 & 11;
//bという変数に22と11のビットORを代入しています。
b = 22 | 11;
//cという変数に22と11のビットXORを代入しています。
c = 22 ^ 11;
//dという変数に22を2ビット右シフトした値を代入しています。(符号は保存されます)
d = -22 >> 2;
//eという変数に-22を2ビット左シフトした値を代入しています。(下位ビットは0埋めされます)
e = -22 << 2;
//fという変数に22を2ビット右シフトした値を代入します(上位ビットは0埋めされます)
f = -22 >>> 2;
//gに22を代入し、11のビットANDを代入します(g = g & 11 と同じ意味です)
g = 22;
g &= 11;
//hに22を代入し、11のビットORを代入します(h =h | 11 と同じ意味です)
h = 22;
h |= 11;
//iに22を代入し、11のビットXORを代入します(i = i ^ 11 と同じ意味です)
i = 22;
i ^= 11;
//jに-22を代入し、2ビット右シフトします(j = j >> 2と同じ意味です)
j = -22;
j >>= 2;
//kに-22を代入し、2ビット左シフトします(k =k <<2と同じ意味です)
k = -22;
k <<= 2;
//mに-22を代入し、2ビット右シフトします(m =m >>> 2と同じ意味です)
m = -22;
m >>>= 2;
</script>
|