代入演算子 (Assignment operator) は、右オペランドの値を左オペランドに代入します。
概要
基本となる代入演算子はイコール (=
) で、右オペランドの値を左オペランドに代入します。たとえば x = y
ならば y
の値を x
に代入します。他には通常の演算を短縮した代入演算子があり、以下の表に示します。
名称 | 短縮表記した演算子 | 意味 |
---|---|---|
代入 | x = y |
x = y |
加算代入 | x += y |
x = x + y |
減算代入 | x -= y |
x = x - y |
乗算代入 | x *= y |
x = x * y |
除算代入 | x /= y |
x = x / y |
剰余代入 | x %= y |
x = x % y |
べき乗代入 | x **= y |
x = x ** y |
左シフト代入 | x <<= y |
x = x << y |
右シフト代入 | x >>= y |
x = x >> y |
符号なし右シフト代入 | x >>>= y |
x = x >>> y |
ビットごとの AND 代入 | x &= y |
x = x & y |
ビットごとの XOR 代入 | x ^= y |
x = x ^ y |
ビットごとの OR 代入 | x |= y |
x = x | y |
代入
値を変数に代入する、シンプルな代入演算子です。代入演算子は、代入した値を返します。ひとつの値を複数の変数に代入するため、代入演算子を連鎖することができます。例をご覧ください。
構文
演算子: x = y
例
// 以下の変数があると想定する // x = 5 // y = 10 // z = 25 x = y // x は 10 になる x = y = z // x、y、z はすべて 25 になる
加算代入
加算代入演算子は右オペランドの値を変数に加算して、その結果を変数に代入します。2 つのオペランドの型は、加算演算子の動作に基づいて決定します。加算または連結を実行できます。詳しくは加算演算子をご覧ください。
構文
演算子: x += y 意味: x = x + y
例
// 以下の変数があると想定する // foo = "foo" // bar = 5 // baz = true // 数値 + 数値 -> 加算 bar += 2 // 7 // 論理値 + 数値 -> 加算 baz += 1 // 2 // 論理値 + 論理値 -> 加算 baz += false // 1 // 数値 + 文字列 -> 連結 bar += "foo" // "5foo" // 文字列 + 論理値 -> 連結 foo += false // "foofalse" // 文字列 + 文字列 -> 連結 foo += "bar" // "foobar"
減算代入
減算代入演算子は変数から右オペランドの値を減算して、その結果を変数に代入します。詳しくは減算演算子をご覧ください。
構文
演算子: x -= y 意味: x = x - y
例
// 以下の変数があると想定する // bar = 5 bar -= 2 // 3 bar -= "foo" // NaN
乗算代入
乗算代入演算子は右オペランドの値と変数の値で乗算を行って、その結果を変数に代入します。詳しくは乗算演算子をご覧ください。
構文
演算子: x *= y 意味: x = x * y
例
// 以下の変数があると想定する // bar = 5 bar *= 2 // 10 bar *= "foo" // NaN
除算代入
除算代入演算子は変数の値と右オペランドの値で除算を行って、その結果を変数に代入します。詳しくは除算演算子をご覧ください。
構文
演算子: x /= y 意味: x = x / y
例
// 以下の変数があると想定する // bar = 5 bar /= 2 // 2.5 bar /= "foo" // NaN bar /= 0 // Infinity
剰余代入
剰余代入演算子は変数の値と右オペランドの値で除算を行って、剰余を変数に代入します。詳しくは剰余演算子をご覧ください。
構文
演算子: x %= y 意味: x = x % y
例
// 以下の変数があると想定する // bar = 5 bar %= 2 // 1 bar %= "foo" // NaN bar %= 0 // NaN
べき乗代入
This is an experimental technology, part of the ECMAScript 2016 (ES7) proposal.
Because this technology's specification has not stabilized, check the compatibility table for usage in various browsers. Also note that the syntax and behavior of an experimental technology is subject to change in future version of browsers as the spec changes.
べき乗代入演算子は、第 1 オペランドと第 2 オペランドでべき乗を行った結果を返します。詳しくはべき乗演算子をご覧ください。
構文
演算子: x **= y 意味: x = x ** y
例
// 以下の変数があると想定する // bar = 5 bar **= 2 // 25 bar **= "foo" // NaN
左シフト代入
左シフト代入演算子は、指定したビット数の分左にシフトした結果を変数に代入します。詳しくは左シフト演算子をご覧ください。
構文
演算子: x <<= y 意味: x = x << y
例
var bar = 5; // (00000000000000000000000000000101) bar <<= 2; // 20 (00000000000000000000000000010100)
右シフト代入
右シフト代入演算子は、指定したビット数の分右にシフトした結果を変数に代入します。詳しくは右シフト演算子をご覧ください。
構文
演算子: x >>= y 意味: x = x >> y
例
var bar = 5; // (00000000000000000000000000000101) bar >>= 2; // 1 (00000000000000000000000000000001) var bar -5; // (-00000000000000000000000000000101) bar >>= 2; // -2 (-00000000000000000000000000000010)
符号なし右シフト代入
符号なし右シフト代入演算子は、指定したビット数の分右にシフトした結果を変数に代入します。詳しくは符号なし右シフト演算子をご覧ください。
構文
演算子: x >>>= y 意味: x = x >>> y
例
var bar = 5; // (00000000000000000000000000000101) bar >>>= 2; // 1 (00000000000000000000000000000001) var bar = -5; // (-00000000000000000000000000000101) bar >>>= 2; // 1073741822 (00111111111111111111111111111110)
ビットごとの AND 代入
ビットごとの AND 代入演算子は双方のオペランドの二進法表記を使用して、ビットごとの AND 演算を行った結果を変数に代入します。詳しくはビットごとの AND 演算子をご覧ください。
構文
演算子: x &= y 意味: x = x & y
例
var bar = 5; // 5: 00000000000000000000000000000101 // 2: 00000000000000000000000000000010 bar &= 2; // 0
ビットごとの XOR 代入
ビットごとの XOR 代入演算子は双方のオペランドの二進法表記を使用して、ビットごとの XOR 演算を行った結果を変数に代入します。詳しくはビットごとの XOR 演算子をご覧ください。
構文
演算子: x ^= y 意味: x = x ^ y
例
var bar = 5; bar ^= 2; // 7 // 5: 00000000000000000000000000000101 // 2: 00000000000000000000000000000010 // ----------------------------------- // 7: 00000000000000000000000000000111
ビットごとの OR 代入
ビットごとの OR 代入演算子は双方のオペランドの二進法表記を使用して、ビットごとの OR 演算を行った結果を変数に代入します。詳しくはビットごとの OR 演算子をご覧ください。
構文
演算子: x |= y 意味: x = x | y
例
var bar = 5; bar |= 2; // 7 // 5: 00000000000000000000000000000101 // 2: 00000000000000000000000000000010 // ----------------------------------- // 7: 00000000000000000000000000000111
例
別の代入演算子を含む左オペランド
特殊な状況では、代入演算子 (例えば x += y
) と意味する式 (ここでは x = x + y
) が同一にはなりません。代入演算子自身の左オペランドに別の代入演算子を含むとき、左オペランドは一度だけ評価されます。例を挙げます:
a[i++] += 5 // i は 1 回だけ評価される a[i++] = a[i++] + 5 // i は 2 回評価される
仕様
ブラウザ実装状況
機能 | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
基本サポート | (有) | (有) | (有) | (有) | (有) |
機能 | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
基本サポート | (有) | (有) | (有) | (有) | (有) | (有) |