演算子
演算子には
がある。
table:単項演算子(上位の演算子が優先順位が高い)
+a, -a aを数値変換し、-はさらに符号反転する。
~a ビット毎のNOT、aを32ビット整数に変換し、その各ビットを反転 (0は1、1は0)する。
!a 論理NOT、a を論理値に変換し、その真偽を反転する。
++a, --a 前置型増減演算子。aの値を1増やす/1減らす。式の値は増減後の値となる。
a++, a-- 後置型増減演算子。aの値を1増やす/1減らす。式の値は増減する前の値となる。
delete a aはオブジェクトのプロパティ、そのプロパティを削除する。
void a aの値を評価するが、式の値は未定義となる。
typeof a xの種別を表わす文字列の値となる。
table:typeof a
'undefined' aが未定義の場合
'boolean' aが論理値の場合
'number' aが数値の場合
'string' aが文字列の場合
'object' aがオブジェクトもしくはNullの場合
'function' aが関数オブジェクトの場合
2項演算子は、オペランド(演算子の演算対象となるデータ)を2つ持ち、a operator b のようにオペランドの間に演算子を置く(中置記法)。
すべての単項演算子は2項演算子よりも優先順位が高い。
table:2項演算子(上位の演算子が優先順位が高い)
*, /, % 乗算、除算、剰余演算子
+, - 加算、減算演算子
<<, >>, >>> 左シフト、右シフト、算術右シフト演算子
<, <=, >=, > より小、以下、以上、より大の比較演算子
instanceof X instanceof B、Xがオブジェクトであり、Bがその値になるならば真を返す in a in X、Xがオブジェクトであり、aと同名のプロパティを持つなら真を返す
==, !=, ===, !== 等値演算子、左右のオペランドが等しい/等しくないを調べる。
前2者は左右のオペランドの種類が違う場合は適宜変換して値を比較する。
後2者は左右のオペランドの種類を含めて比較する。
& ビットごとのAND、左右のオペランドを32ビットの整数に変換し、
ビットごとにAND演算を行う。
^ ビットごとのXOR、左右のオペランドを32ビットの整数に変換し、
ビットごとにXOR演算を行う。
| ビットごとのOR、左右のオペランドを32ビットの整数に変換し、
ビットごとにOR演算を行う。
&& 論理AND、第1オペランドを評価しfalseなら変換前の値を返し、
trueなら第2オペランドを評価しその値を返す。
|| 論理OR、第1オペランドを評価しtrueなら変換前の値を返し、
falseなら第2オペランドを評価しその値を返す。
a ? b : z 条件演算子(これは3項演算子)、第1オペランドを論理値に変換した
ものがtrueなら第2オペランド、falseなら第3オペランドの値を返す。
=, 代入演算子、第1オペランドに第2オペランドの値を代入する。
*=, /=, %=,+=, -=, 例えば、a *= b は a = a * b に等しい。
<<=, >>=, >>>=, つまり、第1オペランドと第2オペンランドを=の前の演算子で演算し、
&=, ^=, |= その結果を第1オペランドに代入する演算子。
, カンマ演算子、a , b は a を評価してから、b を評価する。
値としては最後に評価した値を返す。