728x90
먼저, const란 자바스크립트에서 흔히 '상수'라고한다
재할당이 안되기때문에 변화하지 않는 변수를 사용할 때 쓰이기 때문이다
const name = 'yang'; // yang
// name = 20; // error
console.log(name)
그런데 실제로 입문단계에서 const를 사용하다보면 어?? const는 재할당이 안되는걸로 아는데 왜 이러는거지라고 생각되는 경우가 있다
아래와 같이 말이다
const obj = { name: 'yang' };
obj.name = 'new yang'; // new yang
const arr = [1, 2, 3];
arr.push(4); // [1,2,3,4]
아니 const는 변화하지 않는 변수를 저장하려 사용하는데 분명히 변경이 된다
이는, 자바스크립트에서 변수에 값이 할당되는 방식의 차이이다
const를 사용하면 본질적으로는 js에 '이 변수에 저장된 참조를 변경하고 싶지 않습니다'라는 의미이다
- 기본 데이터 유형에서는 값 자체가 참조이므로 이를 변경할 수 없지만
- 배열이나 객체를 변수에 할당하면 값이 아닌 주소가 저장된다
즉, js 에서 객체나 배열을 생성할 때 변수에 저장되는 것은 데이터의 위치에 대한 참조이기 때문에 const변수에 데이터의 위치가 저장되고 이는 불변이기 때문에 가능한 것이다
결론적으로, const는 데이터의 불변을 보장하는 것이 아닌 데이터의 참조의 불변을 보장한다
번외로, 객체의 참조에 관한 좋은 예시가 있다
{} === {} // false
객체를 생성한 것을 비교하였을 때 아무것도 없는 값은 같지만 ===의 특징으로 인하여 {}는 서로 다른 메모리 주소에 저장된 별개의 객체이므로 위 예시는 false를 반환한다
728x90
'Frontend > JavaScript' 카테고리의 다른 글
[js] label : 중첩 반복문을 한번에 빠져나오고 싶을 때 (0) | 2024.04.16 |
---|---|
[js] ?? 라는 연산자도 있었네: nullish (0) | 2024.04.12 |
[js] + 를 사용하여 숫자형으로 변환하는 방법 (0) | 2024.04.07 |
[js] ==와 ===의 차이점과 비교연산자 (1) | 2024.04.07 |
[js] &&와 || 의 활용법 : 단락회로평가 (0) | 2024.03.01 |