IT_Programming/JavaScript

자바스크립트 완벽가이드 - 5.9 할당 연산자

JJun ™ 2010. 7. 4. 19:56


4장에서 변수를 설명할 때 보았던 바와 같이, =은 자바스크립트에서 변수에 값을 할당할 때 사용된다.

 

예를 들면 다음과 같다.

i = 0


여러분은 흔히 생각하건대 위와 같은 자바스크립트 한 줄이 평가될 수 있는 표현식이라고 인식하지 않을지

모른다. 하지만 이것도 엄연한 표현식이며 엄밀히 말하면 =도 연산자다.


= 연산자는 좌변 피연산자로 변수, 배열 원소, 객체 프로퍼티를 받는다. 우변 피연산자로는 타입에 상관없이 어떤 값이라도 받을 수 있다. 할당 표현식의 값은 우변 피연산자의 값과 같다. 여기엔 한 가지 부수 효과가 있는데 = 연산자는 오른쪽의 값을 왼쪽의 변수, 원소, 프로퍼티 등에 할당하므로 앞으로 이 변수, 원소, 프로퍼티 등을 사용하면 그 할당된 값을 참조하는 것이 된다.


=은 연산자로 정의되어 있기 때문에 좀 더복잡한 표현식에도 포함될 수 있다. 예를 들어 값을 할당하고

그 값을 테스트하는 것을 다음 코드처럼 하나의 표현식에서 함께 할 수 있다.

(a = b) == 0


이와 같은 코드를 쓸 때에는 =와 == 연산자의 차이를 분명히 숙지하고 있어야 한다!
할당 연산자의 연산자 결합 방향은 오른쪽에서 왼쪽이다. 즉, 여러 개의 할당 연산이 같은 표현식에서 일어날 경우 오른쪽의 연산부터 시작하여 왼쪽 방향으로 평가된다는 것이다. 따라서 다음과 같이 코드를 작성하면

하나의 값을 여러 개의 변수에 할당할 수 있다.

 

i = j = k = 0;

 

각 할당 표현식의 값은 우변의 값과 같음을 기억하라. 따라서 위의 코드에서 첫 번째 할당(맨 오른쪽)의 값은 곧 두 번째 할당(중간)의 우변이 되며, 이 값은 곧 마지막 할당(맨 왼쪽)의 우변이 된다.

 

 

 

1. 연산을 동반하는 할당

 

보통의 = 할당 연산자 외에도 자바스크립트에는 다수의 다른 할당 연산자가 지원되는데, 이들은 다른 종류의 연산과 할당 연산을 조합하여 좀 더 간결한 연산자를 제공한다. 예를 들어 += 연산자는 덧셈과 할당을 함께

수행한다.

 

 다음 표현식을 보자.

total += sales_tax;


위 표현식은 아래와 같다.

total = total + sales_tax;


여러분이 짐작할지도 모르지만 += 연산자는 숫자나 문자열에 대해 작용한다.

숫자 피연산자에 대해서는 덧셈과 할당을 수행하며, 문자열 피연산자에 대해서는 이어 붙이기와 할당을

수행한다. +=와 비슷한 연산자로 -=, *=, &= 등이 있다. 표 5-2에 이러한 연산자의 모든 목록이 있다.


대부분의 경우,

a op = b


위와 같이 쓰이는 것은 아래의 표현식과 같다(단, op는 연산자).

a = a op b


위의 두 표현식이 같지 않은 경우는 오직 a가 함수 호출이거나 증가 연산자와 같은 부수 효과를 가질 경우만으로 국한된다.

표 5-2 할당 연산자들

연산자 사용 예 등가 표현
+= a += b a = a + b
-= a -= b a = a - b
*= a *= b a = a * b
/= a /= b a = a / b
%= a %= b a = a % b
<<= a <<= b a = a << b
>>= a >>= b a = a >> b
>>>= a >>>= b a = a >>> b
&= a &= b a = a & b
|= a |= b a = a | b
^= a ^= b a = a ^ b