전처리? 후처리 연산자?!

이게 몰까?

일단 자바스크립트 연산자는 +, -, *, /, % 이렇게 있는데

뭐 +=나 -= 처럼 하면 바로바로 계산하고 할당할 수 있다는 건 다들 알 것이다

근데 mdn에 보면

++ 와 -- 를 각각 점진적인 증가와 감소에 사용할 수 있습니다. 이들은 또한 전처리 또는 후처리 연산자로 사용될 수 있습니다.

라고 하는데 전처리 또는 후처리 연산자로 사용될 수 있다..

이게 대체 몬뜻일까?.

이항 연산자 vs. 단항 연산자

이항 연산자는 x + y 나 a * b 같은 걸 말하고

단항 연산자는 a++ b-- 이런걸 말한다

https://developer.mozilla.org/ko/docs/Web/JavaScript/Guide/Expressions_and_Operators#arithmetic_operators

여기서 좀 시원하게 볼 수 있는데

여기서 볼 부분은

x가 3일 때, ++x는 x에 4를 할당한 후 4를 반환합니다. 반면 x++는 3을 먼저 반환한 후 x에 4를 할당합니다.

요것이다

그니까 정리하자면 ++x 는 자기 자신 연산부터 먼저 처리해준담에 멀 해주는거고
x++는 자기 연산은 나중에 한다는 것이다
++ 위치로 구분하면 되니까 편하다

예시를 들어보자

++x

let a = 1
let b = ++a

console.log(a) //2
console.log(b) //2

왜 둘다 2냐
전처리 => 자기 연산 먼저 하고 다른 일
이기 때문이다.

++a 니까 a가 자기 자신을 먼저 1 올려준다. => a는 2가 됐다.
그런 다음에! b에 대입하는 연산이 이뤄진다. a가 2가 된 상태라 b에도 2가 대입된다.

좀 더 고급으로 가보자

let foo = {
  bar: 0
}

let count = 0;

if (true) count = ++foo.bar;

console.log(foo.bar) // 1
console.log(count) //1

foo.bar가 먼저 자기 자신에 +1 올려주고 그 상태로 count에 할당해 주므로 둘다 1

오~~ 이해가 간다

x++

let a = 1
let b = a++

console.log(a) //2
console.log(b) //1

아까는 둘 다 2였는데 이번엔 b가 1이다
헐.. 어이가 없다.
왜 이렇게 나오냐, x++면 아까 다른 연산 먼저 한다고 했지

그니까 a가 먼저 b에 대입된 다음에 => b에 a의 값인 1 대입
그 다음에! a가 +연산을 하니까 그때서야 a가 증가되어서 a는 2가 된 것이다.

이제 고급 예시

let foo = {
  bar: 0
}

let count = 0;

if (true) count = foo.bar++;

console.log(foo.bar) // 1
console.log(count) //0

똑같다.

foo.bar가 먼저 count에 대입이 됨 => foo.bar는 현재 0이므로 count는 0
그 다음에~ foo.bar가 자기를 1 올려줌 => foo.bar는 1

그냥 생긴것만 복잡하지 똑같네요,,

?.?

여튼간에.. 네 그렇다네요 별거 없네 ㄷ ㄷ

좋은 웹페이지 즐겨찾기