전위 vs 후위
연산 vs 할당
연산자가 식별자보다 앞에 위치하느냐, 아니면 뒤에 위치하느냐?
→ 연산(증가/감소)이 먼저냐, 할당이 먼저냐?
현업에서는 전위연산자보다 후위연사자를 쓰는 게 관례이며,
하지만 연산 vs 할당을 매번 신경 쓰는 게 번거로우니
복합 대입 연산자(+=, -=)를 써서
코드 한 줄을 더 쓰더라도
의도치 않은 연산을 막도록 하자
변수에 단독적으로 쓰일 경우에는 같은 값을 산출
var x = 10;
++x;
console.log(x);
//11
var x = 10;
x++;
console.log(x);
//11
while 문의 조건이나, 함수의 인수처럼
다른 값에 할당을 할 경우,
연산자의 위치에 따라 값이 달라진다
⭐연산(증가/감소)이 먼저냐, 할당이 먼저냐?
var x = 10;
var result;
result = ++x;
console.log(result, x);
// 11 11
var x = 10;
var result;
result = x++;
console.log(result, x);
//10 11
var x = 10;
var result;
result = --x;
console.log(result, x);
// 9 9
var x = 10;
var result;
result = x--;
console.log(result, x);
//10 9
for 문에서는
x++와 ++x의 차이가 거의 없다고 보면 된다
but 후위연산자로 쓰는 게 관례
x++를 쓰면 임시 변수가 하나 더 생성되고,
++x로 쓰면 임시 변수가 생성 되지 않아
엄밀히 말하면 후위연산자가 더 효율적이지만
현재는 크게 의미가 없다고 볼 수 있다
for (x = 10; x < 15; x++) {
console.log(x);
}
/*
10
11
12
13
14
*/
for (x = 10; x < 15; ++x) {
console.log(x);
}
/*
10
11
12
13
14
*/
for 문과 달리 while 문은
연산과 할당의 순서가 영향을 미친다
아래 네 가지 경우를 한번 살펴보도록 하자
복잡해지기 시작한다
var x = 10;
while (++x < 15) {
console.log(x);
}
/*
11
12
13
14
*/
var x = 10;
while (x++ < 15) {
console.log(x);
}
/*
11
12
13
14
15
*/
var x = 10;
while (x < 15) {
console.log(++x);
}
/*
11
12
13
14
15
*/
var x = 10;
while (x < 15) {
console.log(x++);
}
/*
10
11
12
13
14
*/
이처럼 while문의 조건문에 또는 함수의 인자에
달라지는 값을 신경쓰기 번거롭다
- 전위/후위의 차이는 연산과 할당의 순서다.
- 전위연산자와 후위연산자는 개념이나 순서가 헷갈려 의도치 않은 에러를 발생할 수 있다.
- 둘 중 하나를 쓸 거라면 관례에 맞게 전위연산자를 쓰도록 하자.
- 웬만하면 복합 대입 연산자(+=, -=, ...)을 사용해 예상치 못한 연산을 막는 게 좋다.