JavaScript의 전위형과 후위형
사실 증감 연산자는
두 가지 방식으로 작성할 수 있습니다.
++를 예로 들어 이 방식을 살펴보고,
--의 경우에도 모든 것이 유사할 것입니다.
첫 번째 방식에서는 연산자를 변수 이름 뒤에
다음과 같이 작성합니다: a++.
두 번째 방식에서는 연산자를 변수 이름 앞에
다음과 같이 작성합니다: ++a.
첫 번째 형태를 후위형이라고 부르며, 두 번째 형태를 전위형이라고 부릅니다. 이 두 형태 사이의 차이가 나타나는 경우를 살펴보겠습니다.
alert(a++) 코드와
alert(++a) 코드가 있다고 가정해 봅시다.
alert(a++)의 경우 변수가 먼저
출력된 후 1이 증가하지만,
alert(++a)의 경우 변수가 먼저
1 증가한 후 출력됩니다.
다음 예제에서 첫 번째 alert은
먼저 화면에 출력이 실행된 후 변수가 증가하므로
0을 출력할 것입니다:
let num = 0;
alert(num++); // 0을 출력함
alert(num); // 1을 출력함
이제 변수가 먼저 증가한 후 화면에 출력됩니다:
let num = 0;
alert(++num); // 1을 출력함 - 변수가 즉시 증가했음
이러한 동작은 화면 출력뿐만 아니라 대입에서도 유효합니다:
let num1 = 0;
let num2 = num1++; // 변수 num2에는 0이 기록됨
alert(num2); // 0을 출력함
alert(num1); // 1을 출력함 - 변수 num1은 num2에 기록된 후 변경됨
이제 후위형을 전위형으로 변경해 보겠습니다:
let num1 = 0;
let num2 = ++num1; // 변수 num2에는 1이 기록됨
alert(num2); // 1을 출력함
우리의 연산이 별도의 줄에서 수행된다면, 전위형과 후위형 사이에는 차이가 없습니다:
let num = 0;
++num;
num++;
alert(num); // 2를 출력함
코드를 실행하지 않고 무엇이 화면에 출력될지 결정하세요:
let num = 3;
alert(++num);
코드를 실행하지 않고 무엇이 화면에 출력될지 결정하세요:
let num = 3;
alert(num++);
코드를 실행하지 않고 무엇이 화면에 출력될지 결정하세요:
let num = 3;
alert(--num);
코드를 실행하지 않고 무엇이 화면에 출력될지 결정하세요:
let num = 3;
alert(num--);
코드를 실행하지 않고 무엇이 화면에 출력될지 결정하세요:
let num1 = 3;
let num2 = ++num1;
alert(num1);
alert(num2);
코드를 실행하지 않고 무엇이 화면에 출력될지 결정하세요:
let num1 = 3;
let num2 = num1++;
alert(num1);
alert(num2);
코드를 실행하지 않고 무엇이 화면에 출력될지 결정하세요:
let num1 = 3;
let num2 = --num1;
alert(num1);
alert(num2);
코드를 실행하지 않고 무엇이 화면에 출력될지 결정하세요:
let num1 = 3;
let num2 = num1--;
alert(num1);
alert(num2);
코드를 실행하지 않고 무엇이 화면에 출력될지 결정하세요:
let num1 = 3;
num1++;
let num2 = num1--;
alert(num1++);
alert(--num2);