본문 바로가기
JS

++a와 a++의 차이 | for의 로직 | for과 while의 차이 | Reference란

by limew 2023. 11. 18.

++a와 a++의 차이

++는 사실 하나의 함수이며 

++a와 a++둘 다 a에 1을 더한다

하지만 1을 더하는 순서에 차이점이 있다.

 

++a 

1을 더한값을 바로 리턴한다

function(a) {
  return a+1;
}

 

a++

변수에 a를 할당하고

변수+1한 값을 리턴한다.

function(a) {
  const oldValue = a;
  a+1;
  return oldValue+1;
}

 

정리하자면 

let b = ++a // a에 1을 더한 뒤 b에 리턴한다
let b = a++ // b에 a를 리턴한 뒤 a에 1을 더한다.

 

따라서 아래와 같은 상황을 주의해야한다.

let a = 5;
let aa = ++a // 6

a = 5;
let bb = a++ // 5

 

 

for구문 안에서는 i 값을 따로 변수에 리턴하지 않으니 ++a나 a++는 차이가 없다

다만 ++a가 더 빠르다 

for (let i = 0; i < 10; ++i) // 더 빠름
for (let i = 0; i < 10; i++)

 

 

for 구문 로직

1. i 에 값을 할당한다

2. i < 10 검사를 통과하면 for구문 안을 실행한다.

3. for 구문 안을 실행한 뒤 i를 증가시킨다

4. 2번검사를 통과하지 못 할 때까지 2번과 3번을 반복한다. 검사를 통과하지 못하면 for구문을 종료한다.

for (let i = 0; i < 10; ++i) {
  //...
}

 

 

for과 while의 차이

for은 특별한 기준 없이 매 순회마다 인덱스가 증가한다.

while은 인덱스가 증가하는 기준이 복잡할 때 사용한다.

 

 

Reference란 

JS에서 reference란 객체를 가리키는 값, 참조이다

이는 객체 자체가 아니라 객체의 위치를 가리치는 말이다.

 

원시 primitive타입

숫자, 문자열, 불리언, undefined, null, symbol

 

객체타입

object, array, function

 

const aa = {};
const bb = aa; // bb는 aa의 reference이다 (bb의 key,value를 변경 = aa변경)