LHJ

I'm a FE developer.

5.9.4 할당 연산자

27 Apr 2020 » js_lj

할당 연산자는 변수에 값을 할당합니다.
등호의 왼쪽에 있는 것은(1-value라 부르기도 합니다) 반드시 변수나 프로퍼티며, 배열 요소 중 하나여야 합니다(상수에 값을 할당하는 것은 엄밀히 말해 선언의 일부이며 할당 연산자가 아닙니다).
즉, 표현식의 좌변에 있는 것은 반드시 값을 저장할 수 있는 것이어야 합니다.

이 장 초반에서 할당 자체도 표현식이며 값을 반환하므로 다시 할당할 수 있다고 설명했습니다.
이런 성질을 이용해 할당을 체인으로 연결할 수 있습니다.

let v, v0;
v = v0 = 9.8;    // 먼저 v0가 9.8이 되고, 그 다음 v가 9.8이 됩니다.

// while 문의 조건에 있는 할당을 보십시오. 먼저 n이 nums[i]의 값을 받고,
// 다음에는 표현식 전체가 그 값으로 평가되므로 숫자로 비교할 수 있습니다.
const nums = [3, 5, 15, 7, 5];
let n, i =0;
while((n = nums[i]) < 10 && i++ < nums.length) {
	console.log(`Number less than 10: ${n}.`);
}
console.log(`Number greater than 10 found: ${n}.`);
console.log(`${nums.length - i - 1} numbers remain.`);

두 번째 예제에서는 할당 연산자의 우선순위가 비교 연산자보다 낮으므로 괄호를 사용했습니다.

간편한 할당 연산자

일반적인 할당 연산자 외에 연산과 할당을 한꺼번에 수행하는 간편한 할당 연산자도 있습니다.
이들 간편 연산자도 일반적인 할당 연산자와 마찬가지로 전체 표현식의 값은 마지막에 이루어진 할당의 값으로 평가됩니다.
[표 5-9]에 이들 간편 할당 연산자를 요약했습니다.

표 5-9 할당과 연산

연산자동등한 표현
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
x |= yx = x | y
x ^= yx = x ^ y