MDN wants to learn about developers like you: https://qsurvey.mozilla.com/s3/MDN-dev-survey

현재 번역은 완벽하지 않습니다. 한국어로 문서 번역에 동참해주세요.

할당연산자는 오른쪽 피연산자의 값을 왼쪽의 피연산자에 할당한다.

개요

기본 할당연산자는 등호(=) 이다, 이것은 연산자의 오른쪽 피연자의 값을 왼쪽 피연자에 할당한다. 즉, 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

할당

단순 할당 연산자는 값을 변수에 할당한다. 할당 연산자는 할당되는 값을 계산(evaluates)한다. 한개의 값을 여러개의 변수에 할당하기 위해 할당 연산자를 연속으로 사용할 수 있다. 예를 보자.

문법

Operator: x = y

// 다음과 같은 변수를 가정한다.
//  x = 5
//  y = 10
//  z = 25

x = y     // x 는 10
x = y = z // x, y 그리고 z 는 모두  25

덧셈 할당

덧셈 할당 연산자는 오른쪽에 있는 피연산자의 값을 변수에 더하고 그 결과를 변수에 저장한다. 두개의 피연자 타입이 덧셈 할당 연산자의 행동을 결정한다. 덧셈 또는 연결이 가능하다. 자세한 내용은  addition operator 을 본다.

문법

연산자: 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"

뺄셈 할당

뺄셈 할당 연산자는 변수를 오른쪽 피연산자의 값을 뺀 뒤 그결과를 변수에 할당한다. 더 자세한 내용은  subtraction operator을 본다.

문법

연산자: x -= y 
의미:  x  = x - y

// 다음과 같은 변수를 가정하자
//  bar = 5

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

곱셈 할당 연산

곱셈 할당 연산자는 오른쪽 피연산자의 값으로 변수를 곱한다음 그 결과를 변수에 할당한다. 더 자세한 내용은  multiplication operator 을 본다.

문법

연산자: x *= y 
의미:  x  = x * y

// 다음과 같은 변수를 가정한다.
//  bar = 5

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

나눗셈 할당

나눗셈 할당 연산자는 변수를 오른쪽 피연산자로 나눈다음 그 결과를 변수에 할당한다. 더 자세한 내용은  division operator을 본다.

문법

연산자: x /= y 
의미:  x  = x / y

// 다음과 같은 변수를 가정한다.
//  bar = 5

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

나머지 연산 할당

나머지 연산 할당은 변수를 오른쪽 피연산자로 나눈 다음 그 나머지를 변수에 할당한다. 더 자세한 내용은 remainder operator을 본다.

문법

연산자: 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.

지수연산 할당 연산자는 첫번째 피연산자를 두번째 피연산자 만큼 거듭제곱한 결과를 왼쪽 변수에 할당한다.(역자주 원문에 할당에 대한 부분이 빠져 있어 추가함.  The exponentiation assignment operator evaluates to the result of raising first operand to the power second operand.)

자세한 내용은 exponentiation operator을 본다.

Syntax

연산자: x **= y 
의미:  x  = x ** y

Examples

// Assuming the following variable
//  bar = 5

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

왼쪽 쉬프트 할당

왼쪽 쉬프트 할당 연산자는 지정한 수 만큼의 비트를 왼쪽으로 이동한뒤 그 결과를 변수에 할당한다. 더 자세한 내용은 left shift operator를 본다.

문법

연산자: x <<= y 
의미:  x   = x << y

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

오른쪽 쉬프트 할당

오른쪽 쉬프트 할당 연산자는 지정한 수 만큼 비트를 오른쪽으로 이동한 뒤 그 결과를 변수에 할당한다. 자세한 내용은 right shift operator를 본다.

문법

연산자: x >>= y 
의미:  x   = x >> y

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

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

없는 오른쪽 쉬프트 할당

부호 없는 오른쪽 쉬프트 할당 연산자는 지정된 수 만큼의 비트를 오른쪽으로 이동한다음 그결과를 변수에 할당한다. 자세한 내용은  unsigned right shift operator을 본다.

문법

연산자: x >>>= y 
의미:  x    = x >>> y

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

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

비트 AND 할당

비트 AND 할당 연산자는 피연산자 모두 비트(바이너리)표현를 사용해서 비트 AND연산을 한다음 그 결과를 변수에 할당한다. 자세한 내용은bitwise AND operator을 본다.

문법

연산자: x &= y 
의미:  x  = x & y

var bar = 5;
// 5:     00000000000000000000000000000101
// 2:     00000000000000000000000000000010
bar &= 2; // 0

비트 XOR 할당

비트 XOR 할당 연산자는 피연산자 모두 비트(바이너리)표현를 사용해서 비트 XOR연산을 한다음 그 결과를 변수에 할당한다. 자세한 내용은  bitwise XOR operator를 본다.

문법

연산자: x ^= y 
의미:  x  = x ^ y

var bar = 5;
bar ^= 2; // 7
// 5: 00000000000000000000000000000101
// 2: 00000000000000000000000000000010
// -----------------------------------
// 7: 00000000000000000000000000000111

비트 OR 할당

비트 OR 할당 연산자는 피연산자 모두 비트(바이너리)표현를 사용해서 비트 OR연산을 한다음 그 결과를 변수에 할당한다. 자세한 내용은  bitwise OR operator를 본다.

문법

연산자: x |= y 
의미:  x  = x | y

var bar = 5;
bar |= 2; // 7
// 5: 00000000000000000000000000000101
// 2: 00000000000000000000000000000010
// -----------------------------------
// 7: 00000000000000000000000000000111

다른 할당 연산자를 갖는 왼쪽 피연산자

일반적이지 않은 상황에서, 할당 연산자(예 x += y) 는 위에 있는 의미 표현 (here x = x + y)과 동일하지 않다. 할당 연산자의  왼쪽 피연산자 그 자신이 할당 연산자를 포함할 때, 왼쪽 피연산자는 한번만 계산된다. 예를 들면:

a[i++] += 5         // i는 한번만 계산된다.
a[i++] = a[i++] + 5 // i는 두번 계산 된다.

스펙

Specification Status Comment
ECMAScript 2017 Draft (ECMA-262)
The definition of 'Assignment operators' in that specification.
Draft  
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'Assignment operators' in that specification.
Standard  
ECMAScript 5.1 (ECMA-262)
The definition of 'Assignment operators' in that specification.
Standard  
ECMAScript 1st Edition (ECMA-262)
The definition of 'Assignment operators' in that specification.
Standard Initial definition.

Browser compatibility

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
Basic support (Yes) (Yes) (Yes) (Yes) (Yes)
Feature Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Basic support (Yes) (Yes) (Yes) (Yes) (Yes) (Yes)

참고

문서 태그 및 공헌자

 이 페이지의 공헌자: daehyoung
 최종 변경: daehyoung,