- variable = expression (e3/N2)
- 変数variableにexpressionを代入してその値を返す。 「=」は「等しい」という意味ではなく「代入する」という意味を持つ。
xx = 5; // xxに5が代入される yy = xx; // yyにxxの値(=5)が代入される zz = "ABC"; // zzに文字列"ABC"が代入される次の例は数学的には解無しとなるが、プログラミング的には「xxに、xxと2の和を代入する」という意味を持つ。xx = xx + 2:
- expression1 + expression2 (e3/N2)
- expression1とexpression2の和を返す。 文字列の場合はexpression1とexpression2を連結した文字列を返す。 文字列と数値の場合は、数値が文字列に変換された後、連結される。
xx = 5 + 2; // xxに7が代入される xx = "ABC" + "DEF" // xxに"ABCDEF"が代入される xx = "123" + 5; // xxに"1235"が代入される- expression1 - expression2 (e3/N2)
- expression1とexpression2の差を返す。 文字列の場合は使えない。"123" - "3" が "12" にはならない。
- expression1 * expression2 (e3/N2)
- expression1とexpression2の積を返す。
- expression1 / expression2 (e3/N2)
- expression1をexpression2で割った値を返す。
- expression1 % expression2 (e3/N2)
- expression1をexpression2で割った余りを返す。
- variable++ (e3/N2)
- variableが数値の場合、variable = variable + 1 と同じ。
- variable-- (e3/N2)
- variableが数値の場合、variable = variable - 1 と同じ。
- expression1 == expression2 (e3/N2)
- expression1がexpression2と等しければtrue、さもなくばfalseを返す。数値にも文字列にも使用可能。両項の型が異なる場合は適切に暗黙の型変換が行われた後、比較されるが、NN4で LANGUAGE="JavaScript1.2" と指定した場合のみ例外で、両者の型が異なると常に false を返す。
if (xx == 5) { alert("xx is five."); }
- expression1 != expression2 (e3/N2)
- expression1がexpression2と等しくなければtrue、さもなくばfalseを返す。 数値にも文字列にも使用可能。
- expression1 < expression2 (e3/N2)
- expression1がexpression2より小さければtrue、さもなくばfalseを返す。 文字列の場合は辞書順の前後比較を行う。
- expression1 <= expression2 (e3/N2)
- expression1がexpression2以下であればtrue、さもなくばfalseを返す。 文字列の場合は辞書順の前後比較を行う。
- expression1 > expression2 (e3/N2)
- expression1がexpression2より大きければtrue、さもなくばfalseを返す。 文字列の場合は辞書順の前後比較を行う。
- expression1 >= expression2 (e3/N2)
- expression1がexpression2以上であればtrue、さもなくばfalseを返す。 文字列の場合は辞書順の前後比較を行う。
- expression1 === expression2 (e4/N45)
- ==演算子が(NNでのJavaScript1.2の場合を除いて)expression1とexpression2の暗黙の型変換を行うのに対して、===は暗黙の型変換を行わない比較を行う。
if (123 === "123") // false if ("123" === "123") // true
- expression1 !== expression2 (e4/N45)
- 型変換を行わない比較。
123 !== "123" // true "123" !== "123" // false
- -number (e3/N2)
- マイナスの数値を表します。
xx = -5;- +number (e?/N?)
- プラスの数値を表します。NN4.0など、少し古いブラウザではサポートしていないので、まだ使用しない方が無難なようです。
- expression1 && expression2 (e3/N2)
- expression1がtrue、かつ、expression2がtrueであればtrueを返す。
if ((1 <= mon) && (mon <= 12)) { alert("xx is between 1 and 12."); }
- expression1 || expression2 (e3/N2)
- expression1がtrue、または、expression2がtrueであればtrueを返す。
if ((xx == "ABC") || (xx == "abc")) { alert("xx is ABC."); }
- !expression1 (e3/N2)
- expression1がfalseであればtrueを返す。
- expression1 ? expression2 : expression3 (e3/N2)
- expression1がtrueであればexpression2を、さもなくばexpression3を返す。 次の例はxxが5以上であれば"big"、さもなくば"small"をyyに代入する。
yy = (xx >= 5) ? "big" : "small";
- expression1, expression2 (e3/N2)
- 常にexpression2の値を返す。ただし、代入演算子(=など)よりも優先度が低いため、xx = 1, 2; は (xx = 1), 2; と解釈され、xx には 1 が代入されるので注意。また、alert(1, 2); のような関数の引数リストにおけるカンマは、カンマ演算子とは見なされない。
- expression1 & expression2 (e3/N2)
- 4バイト整数と見なして各ビットをANDした結果を返す。 0x87654321 & 0xffff0000 は 0x87650000 となる。
- expression1 | expression2 (e3/N2)
- 4バイト整数と見なして各ビットをORした結果を返す。 0x87654321 | 0xffff0000 は 0xffff4321 となる。
- expression1 ^ expression2 (e3/N2)
- 4バイト整数と見なして各ビットをXORした結果を返す。 0x1100 ^ 0x1010 は 0x0110 となる。
- ~expression1 (e3/N2)
- 4バイト整数と見なして各ビットを反転させた結果を返す。 ~0xffff0000 は 0x0000ffff となる。
- expression1 << expression2 (e3/N2)
- 4バイト整数と見なしてexpression1をexpression2ビット左シフトした結果を返す。 0x87654321 << 8 は 0x65432100 となる。
- expression1 >> expression2 (e3/N2)
- 4バイト整数と見なしてexpression1をexpression2ビット右シフトした結果を返す。 右からは最上位のビットが埋められる。 0x87654321 >> 8 は 0xff876543 となる。
- expression1 >>> expression2 (e3/N2)
- 4バイト整数と見なしてexpression1をexpression2ビット右シフトした結果を返す。 右からは常に0が埋められる。 0x87654321 >>> 8 は 0x00876543 となる。
- variable += expression (e3/N2)
- variable = variable + expression と同じ。
- variable -= expression (e3/N2)
- variable = variable - expression と同じ。
- variable *= expression (e3/N2)
- variable = variable * expression と同じ。
- variable /= expression (e3/N2)
- variable = variable / expression と同じ。
- variable %= expression (e3/N2)
- variable = variable % expression と同じ。
- variable &= expression (e3/N2)
- variable = variable & expression と同じ。
- variable |= expression (e3/N2)
- variable = variable | expression と同じ。
- variable ^= expression (e3/N2)
- variable = variable ^ expression と同じ。
- variable <<= expression (e3/N2)
- variable = variable << expression と同じ。
- variable >>= expression (e3/N2)
- variable = variable >> expression と同じ。
- variable >>>= expression (e3/N2)
- variable = variable >>> expression と同じ。
- new objectType(arg1, arg2, ...) (e3/N2)
- objectTypeで指定したオブジェクトを生成する。
dd = new Date(1999, 12, 31);
- delete expression (e4/N4)
- expressionで指定したプロパティやオブジェクトを削除する。
buf = "ABCDEFG"; delete buf;
- typeof expression (e4/N3)
- typeof(expression) (e3/N4)
- expressionの型を示す文字列( "string", "number", "object", "boolean", "function", "undefined" など)を返す。
- void expression (e4/N3)
- void(expression) (e3/N4)
- expressionの値を返さないようにする。
<A HREF="javascript:void(func())">XXX</A>
各演算子の優先順位は以下のようになる。同じレベルの演算子は、式の左側にある方が優先度は高い。たとえば、(式1)は(式2)と解釈されて答えは13となる。しかし、バグを埋め込まないためにも、優先順位が直感的に解らない個所には(たとえ無駄であっても)括弧をつけて、優先度を明示的に指定してやることを奨める。(式1) xx = 3 + 4 * 5 / 2; (式2) xx = 3 + ((4 * 5) / 2);
↑
高
い
低
い
↓配列([]) 括弧(( )) 増減(++ --) マイナス(-) 反転(~) NOT(!) 乗除余(* / %) 加減(+ -) 文字列(+) シフト(<< >> <<<) 比較(< <= >= >) 比較(== != === !==) AND(&) XOR(^) OR(|) かつ(&&) または(||) 条件(? :) 代入(=) 複合代入(+=など) カンマ(,)