전처리? 후처리 연산자?!
이게 몰까?
일단 자바스크립트 연산자는 +, -, *, /, % 이렇게 있는데
뭐 +=나 -= 처럼 하면 바로바로 계산하고 할당할 수 있다는 건 다들 알 것이다
근데 mdn에 보면
++ 와 -- 를 각각 점진적인 증가와 감소에 사용할 수 있습니다. 이들은 또한 전처리 또는 후처리 연산자로 사용될 수 있습니다.
라고 하는데 전처리 또는 후처리 연산자로 사용될 수 있다..
이게 대체 몬뜻일까?.
이항 연산자 vs. 단항 연산자
이항 연산자는 x + y 나 a * b 같은 걸 말하고
단항 연산자는 a++ b-- 이런걸 말한다
여기서 좀 시원하게 볼 수 있는데
여기서 볼 부분은
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
그냥 생긴것만 복잡하지 똑같네요,,
?.?
여튼간에.. 네 그렇다네요 별거 없네 ㄷ ㄷ
Author And Source
이 문제에 관하여(전처리? 후처리 연산자?!), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@dhldksgehl/전처리-후처리-연산자저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)