728x90
JavaScript에서 기존에 존재하는 배열을 초기화(빈 배열로 만들기)하고 싶었는데
코드 중간에 array = [];
라고 썼더니 에러가 났다.
그 이유를 생각해보니까 자바스크립트에서 배열은 const형으로 선언해주는 것이 정석인데, 다른 말로 참조변수가 가리키는(참조하는) 배열을 바꿀 수 없도록 하는 타입형이다.
✔️ 처음의 실패코드
아래와 같은 코드를 실행시키면 TypeError: Assignment to constant variable.
에러가 발생한다.
const testArray1 = [1, 2, 3, 4];
testArray1 = []; // ERROR
이렇게 코드를 짤 경우에는 testArray1
이라는 참조변수에 참조했던 배열 [1, 2, 3, 4]
를 빈 array ([ ])로 대체하는 로직인데, const형이기 때문에 참조변수가 참조하는 배열을 바꿀 수 없어서 타입 에러가 난다.
✔️ 해결코드1 : let
형으로 const
형 바꾸기
이렇게 쓰고 싶은 경우 한 가지 방법은 let
형으로 배열을 선언하는 것이다.
let testArray2 = [1, 2, 3, 4];
testArray2 = [];
console.log(testArray2); // 결과 : []
let
은 const
와 달리 reference를 바꿀 수 있어 위의 코드로도 타입 에러가 뜨지 않는다.
✔️ 해결코드2 : array.length = 0;
const
형 배열을 빈 배열로 바꾸고싶으면 아래와 같이 해주면 된다.
const testArray3 = [1, 2, 3, 4];
testArray3.length = 0;
console.log(testArray3); // 결과 : []
위 코드로 짤 경우 testArray3
에서 참조하는 배열을 길이가 0인 배열로 바꾸는 것이기 때문에 const
형을 사용하면서도 처음 내 의도대로 빈 배열을 가질 수 있다.
📍 JavaScript 타입 관련 참고 (ft. AirBnB)
- reference를 쓸 땐
const
형으로 선언할 것 (var
쓰지 않기) - 그 외는
let
으로 선언하고var
은 쓰지말 것
- block-scoped :
const
형,let
형 - function-scoped :
var
형
728x90
'Web > HTML CSS JS' 카테고리의 다른 글
[HTML+CSS] 티스토리 코드블럭 테두리 없애기 (1) | 2022.11.04 |
---|