result = result++;와 result = ++result;는 증감 연산자의 동작 방식 때문에 결과가 다르다. 이를 이해하려면 후위 연산자(result++)와 전위 연산자(++result)의 차이를 알아야 한다.
result++)result++는 현재 값을 반환하고 나서 result를 1 증가시킨다.++result)++result는 result를 먼저 1 증가시키고 나서 증가된 값을 반환한다.result++는 후위 연산자이므로, 현재 값이 반환된 후 result가 1 증가한다.result =로 인해 반환된 현재 값이 다시 result에 할당된다.result의 값이 변하지 않는다.예시:
let result = 5;
result = result++;
console.log(result); // 출력: 5
++result는 전위 연산자이므로, result를 먼저 1 증가시킨다.result =에 의해 다시 result에 할당된다.result는 정상적으로 1 증가한다.예시:
let result = 5;
result = ++result;
console.log(result); // 출력: 6
| 표현식 | 설명 | 결과 |
|---|---|---|
result = result++; | result의 현재 값이 반환되고, 증가된 값이 덮어써져 무시됨. | 변하지 않음 |
result = ++result; | result를 먼저 증가시킨 후, 증가된 값이 다시 result에 할당됨. | 1 증가 |
result = result++;는 값을 증가시키는 작업과 다시 할당하는 작업이 충돌하면서 발생한다.
result++의 반환값(증가 전 값)이 result에 덮어써지므로 실제 증가한 값이 적용되지 않는다.++result는 증가 후 값을 반환하므로 이런 충돌이 발생하지 않는다.Tip: 코드의 명확성을 위해
result++와++result를 대입문과 함께 사용하는 것은 지양하는 것이 좋다.