const 로 선언한 변수에 참조값을 할당할 경우, 값을 변경할 수 있는 이유

Bin2·2022년 5월 23일
0

const 선언 후 원시값을 할당할 경우

const name = 'sangbin' // name에 'sangbin'이라는 값 자체가 할당됨

name = 'kong' // error => const는 상수이기 때문에 다른 값으로 변경 불가

const 선언 후 참조값을 할당할 경우

참조값(function, array, object)을 할당할 경우 값이 저장되는 것이 아닌, 주소가 할당됨

const obj = { name: 'sangbin' } // obj에 { name: 'sangbin' } 객체가 할당된 것이 아니라, **객체의 주소가 할당됨**

obj.name = 'kong' // obj의 주소값을 바꾼것이 아니라, 저장된 주소 안의 객체의 값을 변경했기 때문에 가능함

obj = { name: 'kong' } // error => obj에 다른 객체의 주소값을 재할당 했기때문에 불가능

obj = 'dahyun' // error => 저장된 주소를 다른 원시값으로 재할당도 불가능
								

array도 마찬가지

const arr = [1,2,3] // arr에 [1,2,3] 배열 자체가 할당된 것이 아닌, [1,2,3] **배열의 주소가 할당됨**

arr[0] = 10 // arr의 주소값을 바꾼것이 아닌, 저장된 주소 안의 배열의 값을 변경했기 때문에 가능

arr = [2,3,4] // error => arr에 다른 배열의 주소를 재할당 하기때문에 불가능

변수에 참조값을 할당할 경우 주소가 저장되는것을 이해하는게 중요

const arr1 = [1,2,3]
const arr2 = [1,2,3]

console.log(arr1 === arr2) // false
profile
Developer

0개의 댓글