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
를 대입문과 함께 사용하는 것은 지양하는 것이 좋다.