전위연산자와 후위연산자(feat. 반복문)

이태권 (Taekwon Lee)·2022년 5월 4일
0

개념

전위 vs 후위
연산 vs 할당

연산자가 식별자보다 앞에 위치하느냐, 아니면 뒤에 위치하느냐?
→ 연산(증가/감소)이 먼저냐, 할당이 먼저냐?


실제 사용

현업에서는 전위연산자보다 후위연사자를 쓰는 게 관례이며,
하지만 연산 vs 할당을 매번 신경 쓰는 게 번거로우니

복합 대입 연산자(+=, -=)를 써서
코드 한 줄을 더 쓰더라도
의도치 않은 연산을 막도록 하자


공통점

변수에 단독적으로 쓰일 경우에는 같은 값을 산출

var x = 10;
++x;

console.log(x);
//11
var x = 10;
x++;

console.log(x);
//11

차이점

while 문의 조건이나, 함수의 인수처럼

다른 값에 할당을 할 경우,
연산자의 위치에 따라 값이 달라진다

⭐연산(증가/감소)이 먼저냐, 할당이 먼저냐?

  1. 전위연산자: 연산(증가/감소) 후 할당
  2. 후위연산자: 할당 후 연산(증가/감소)
var x = 10;
var result;

result = ++x;
console.log(result, x);

// 11 11
var x = 10;
var result;

result = x++;
console.log(result, x);

//10 11
var x = 10;
var result;

result = --x;
console.log(result, x);

// 9 9
var x = 10;
var result;

result = x--;
console.log(result, x);

//10 9

반복문(for, while)에서의 전위/후위연산자

for 문의 전위/후위연산자

for 문에서는
x++와 ++x의 차이가 거의 없다고 보면 된다

but 후위연산자로 쓰는 게 관례

x++를 쓰면 임시 변수가 하나 더 생성되고,
++x로 쓰면 임시 변수가 생성 되지 않아

엄밀히 말하면 후위연산자가 더 효율적이지만
현재는 크게 의미가 없다고 볼 수 있다

for (x = 10; x < 15; x++) {
    console.log(x);
}
/*
10
11
12
13
14
*/
for (x = 10; x < 15; ++x) {
    console.log(x);
}
/*
10
11
12
13
14
*/

while 문의 전위/후위연산자

for 문과 달리 while 문은
연산과 할당의 순서가 영향을 미친다

아래 네 가지 경우를 한번 살펴보도록 하자
복잡해지기 시작한다

var x = 10;

while (++x < 15) {
    console.log(x);
}
/*
11
12
13
14
*/
var x = 10;

while (x++ < 15) {
    console.log(x);
}
/*
11
12
13
14
15
*/
var x = 10;

while (x < 15) {
    console.log(++x);
}
/*
11
12
13
14
15
*/
var x = 10;

while (x < 15) {
    console.log(x++);
}
/*
10
11
12
13
14
*/

이처럼 while문의 조건문에 또는 함수의 인자에
달라지는 값을 신경쓰기 번거롭다


결론

  1. 전위/후위의 차이는 연산과 할당의 순서다.
  2. 전위연산자와 후위연산자는 개념이나 순서가 헷갈려 의도치 않은 에러를 발생할 수 있다.
  3. 둘 중 하나를 쓸 거라면 관례에 맞게 전위연산자를 쓰도록 하자.
  4. 웬만하면 복합 대입 연산자(+=, -=, ...)을 사용해 예상치 못한 연산을 막는 게 좋다.

참고 사이트

코딩도장 반복문에서 후위증감연산자 사용

JavaScript 증감연산자(Feat. 전위 연산자, 후위 연산자)

profile
(Backend Dev.) One step at a time

0개의 댓글