JavaScript - 代入演算子

代入演算子

JavaScript では、= 演算子を使って、変数やプロパティに値を代入します。他にも通常の演算を短縮した代入演算子があります。

短縮表記した演算子一覧
名称短縮表記した演算子意味
代入x = yx = y
加算代入x += yx = x + y
減算代入x -= yx = x - y
乗算代入x *= yx = x * y
除算代入x /= yx = x / y
余剰代入x %= yx = x % y
べき乗代入x **= yx = x ** y
左シフト代入x >>= yx = x >> y
右シフト代入x <<= yx = x << y
符号なし右シフト代入x <<<= yx = x <<< y
ビットごとの AND 代入x &= yx = x & y
ビットごとの XOR 代入x ^= yx = x ^ y
ビットごとの OR 代入x |= yx = x | y

代入

値を変数に代入する、シンプルな代入演算子です。代入演算子は、代入した値を返します。ひとつの値を複数の変数に代入するため、代入演算子を連鎖することができます。

x = 5
y = 10
z = 25

x = y     // x は 10 になる
x = y = z // x、y、z はすべて 25 になる

加算代入

加算代入演算子は右オペランドの値を変数に加算して、その結果を変数に代入します。2 つのオペランドの型は、加算演算子の動作に基づいて決定します。加算または連結を実行できます。

foo = "foo"
bar = 5
baz = true

// 数値 + 数値 -> 加算
bar += 2 // 7

// 論理値 + 数値 -> 加算
baz += 1 // 2

// 論理値 + 論理値 -> 加算
baz += false // 1

// 数値 + 文字列 -> 連結
bar += "foo" // "5foo"

// 文字列 + 論理値 -> 連結
foo += false // "foofalse"

// 文字列 + 文字列 -> 連結
foo += "bar" // "foobar"

減算代入

減算代入演算子は変数から右オペランドの値を減算して、その結果を変数に代入します。

bar = 5

bar -= 2     // 3
bar -= "foo" // NaN

乗算代入

乗算代入演算子は右オペランドの値と変数の値で乗算を行って、その結果を変数に代入します。

bar = 5

bar *= 2     // 10
bar *= "foo" // NaN

除算代入

除算代入演算子は変数の値と右オペランドの値で除算を行って、その結果を変数に代入します。

bar = 5

bar /= 2     // 2.5
bar /= "foo" // NaN
bar /= 0     // Infinity

余剰代入

剰余代入演算子は変数の値と右オペランドの値で除算を行って、剰余を変数に代入します。

bar = 5

bar %= 2     // 1
bar %= "foo" // NaN
bar %= 0     // NaN

べき乗代入

べき乗代入演算子は、第 1 オペランドと第 2 オペランドでべき乗を行った結果を返します。

bar = 5

bar **= 2     // 25
bar **= "foo" // NaN

左シフト代入

左シフト代入演算子は、指定したビット数の分左にシフトした結果を変数に代入します。

var bar = 5; //  5 (00000000000000000000000000000101)
bar <<= 2;   // 20 (00000000000000000000000000010100)

右シフト代入

右シフト代入演算子は、指定したビット数の分右にシフトした結果を変数に代入します。

var bar = 5; //  5 (00000000000000000000000000000101)
bar >>= 2;   //  1 (00000000000000000000000000000001)

var bar -5;  // -5 (-00000000000000000000000000000101)
bar >>= 2;   // -2 (-00000000000000000000000000000010)

符号なし右シフト代入

符号なし右シフト代入演算子は、指定したビット数の分右にシフトした結果を変数に代入します。

var bar = 5;  //  5 (00000000000000000000000000000101)
bar >>>= 2;   //  1 (00000000000000000000000000000001)

var bar = -5; // -5 (-00000000000000000000000000000101)
bar >>>= 2;   // 1073741822 (00111111111111111111111111111110)

ビットごとの AND 代入

ビットごとの AND 代入演算子は双方のオペランドの 2 進法表記を使用して、ビットごとの AND 演算を行った結果を変数に代入します。

var bar = 5;
bar &= 2; // 0

// 5: 00000000000000000000000000000101
// 2: 00000000000000000000000000000010
// -----------------------------------
// 0: 00000000000000000000000000000000

ビットごとの XOR 代入

ビットごとの XOR 代入演算子は双方のオペランドの 2 進法表記を使用して、ビットごとの XOR 演算を行った結果を変数に代入します。

var bar = 5;
bar ^= 2; // 7

// 5: 00000000000000000000000000000101
// 2: 00000000000000000000000000000010
// -----------------------------------
// 7: 00000000000000000000000000000111

ビットごとの OR 代入

ビットごとの OR 代入演算子は双方のオペランドの二進法表記を使用して、ビットごとの OR 演算を行った結果を変数に代入します。

var bar = 5;
bar |= 2; // 7

// 5: 00000000000000000000000000000101
// 2: 00000000000000000000000000000010
// -----------------------------------
// 7: 00000000000000000000000000000111

関連記事

JavaScript のまとめページはプログラミング JavaScript 入門を参照してください。

Category:
プログラミング
公開日:
更新日:
Pageviews:
17
Shares:
0
Tag:
JavaScript
hatebu icon
hatebu