とほほのJavaScript入門(演算子)

とほほのWWW入門 > とほほのJavaScript入門 > 演算子
2000年5月2日版

代入演算子

variable = expression (e3/N2)
変数variableexpressionを代入してその値を返す。 「=」は「等しい」という意味ではなく「代入する」という意味を持つ。
    xx = 5;      // xxに5が代入される
    yy = xx;     // yyにxxの値(=5)が代入される
    zz = "ABC";  // zzに文字列"ABC"が代入される
次の例は数学的には解無しとなるが、プログラミング的には「xxに、xxと2の和を代入する」という意味を持つ。
    xx = xx + 2:

算術演算子

expression1 + expression2 (e3/N2)
expression1expression2の和を返す。 文字列の場合はexpression1expression2を連結した文字列を返す。 文字列と数値の場合は、数値が文字列に変換された後、連結される。
    xx = 5 + 2;        // xxに7が代入される
    xx = "ABC" + "DEF" // xxに"ABCDEF"が代入される
    xx = "123" + 5;    // xxに"1235"が代入される
expression1 - expression2 (e3/N2)
expression1expression2の差を返す。 文字列の場合は使えない。"123" - "3" が "12" にはならない。

expression1 * expression2 (e3/N2)
expression1expression2の積を返す。

expression1 / expression2 (e3/N2)
expression1expression2で割った値を返す。

expression1 % expression2 (e3/N2)
expression1expression2で割った余りを返す。

variable++ (e3/N2)
variableが数値の場合、variable = variable + 1 と同じ。

variable-- (e3/N2)
variableが数値の場合、variable = variable - 1 と同じ。

比較演算子

expression1 == expression2 (e3/N2)
expression1expression2と等しければtrue、さもなくばfalseを返す。数値にも文字列にも使用可能。両項の型が異なる場合は適切に暗黙の型変換が行われた後、比較されるが、NN4で LANGUAGE="JavaScript1.2" と指定した場合のみ例外で、両者の型が異なると常に false を返す。
    if (xx == 5) {
        alert("xx is five.");
    }

expression1 != expression2 (e3/N2)
expression1expression2と等しくなければtrue、さもなくばfalseを返す。 数値にも文字列にも使用可能。

expression1 < expression2 (e3/N2)
expression1expression2より小さければtrue、さもなくばfalseを返す。 文字列の場合は辞書順の前後比較を行う。

expression1 <= expression2 (e3/N2)
expression1expression2以下であればtrue、さもなくばfalseを返す。 文字列の場合は辞書順の前後比較を行う。

expression1 > expression2 (e3/N2)
expression1expression2より大きければtrue、さもなくばfalseを返す。 文字列の場合は辞書順の前後比較を行う。

expression1 >= expression2 (e3/N2)
expression1expression2以上であればtrue、さもなくばfalseを返す。 文字列の場合は辞書順の前後比較を行う。

expression1 === expression2 (e4/N45)
==演算子が(NNでのJavaScript1.2の場合を除いて)expression1expression2の暗黙の型変換を行うのに対して、===は暗黙の型変換を行わない比較を行う。
    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バイト整数と見なしてexpression1expression2ビット左シフトした結果を返す。 0x87654321 << 8 は 0x65432100 となる。

expression1 >> expression2 (e3/N2)
4バイト整数と見なしてexpression1expression2ビット右シフトした結果を返す。 右からは最上位のビットが埋められる。 0x87654321 >> 8 は 0xff876543 となる。

expression1 >>> expression2 (e3/N2)
4バイト整数と見なしてexpression1expression2ビット右シフトした結果を返す。 右からは常に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(|)
かつ(&&)
または(||)
条件(? :)
代入(=) 複合代入(+=など)
カンマ(,)


Copyright (C) 1996-1999 とほほ
http://wakusei.cplaza.ne.jp/twn/wwwjsope.htm