javaScript/배열

javaScript const 배열, const array 값이 변경 가능한 이유

bunbun2 2022. 11. 3. 18:55
const list = [1, 2, 3, 4];

console.log(list); // [1, 2, 3, 4] 출력

 list.push(5);
 list.push(6);
 list[6] = 7;


console.log(list); // [1, 2, 3, 4, 5, 6, 7] 출력

 

const로 상수 선언을 하면 값을 바꿀 수 없어야 정상인데, 대체 뭘까?

 

그 이유는 배열(리스트)을 선언했기 때문. 

 

js에서는 따로 배열과 리스트를 구분하지 않고 전부 리스트로 사용하는데,

저기서 const로 선언된 상수는 리스트의 '값' 이 아니라 리스트를 가리키는 '주소'이다.

그렇기 때문에 리스트의 요소들을 마음대로 바꿀 수 있는것!!!

 

지금 내가 살고있는 집에 가구를 들이고, 리모델링하고 지지고 볶아도 내 집이 아니라 내 집 주소가 상수로 선언되어 있기 때문에 괜찮은것!!!!!!!

 

 

 

그런데 웃긴것이 재할당을 하면은 그것은 또 오류가 난다

const list = [1, 2, 3, 4];

console.log(list); // [1, 2, 3, 4] 출력

 list.push(5);
 list.push(6);
 list[6] = 7;


console.log(list); // [1, 2, 3, 4, 5, 6, 7] 출력

list = [3, 4, 5]; // 오류

 

그렇다면 재할당은 리스트의 주소를 바꾸는것인가?

궁금해서 알아보기로 했다. 그런데

 

javaScript 에서 메모리 주소를 확인하는 방법은 없다고 한다.

읭..??

 

이유는 js가 C++ 기반으로 만들어진 v8 엔진을 이용한 어쩌구.. 너무 전문적이다.. 나는 모르겠다.

어쩄든 브라우저 개발자도구로 보는방법이 있다고는  하는데........

 

 

...

그냥 const 재할당은 안되는 것으로 외우도록 하자