-
javaScript const 배열, const array 값이 변경 가능한 이유javaScript/배열 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 재할당은 안되는 것으로 외우도록 하자