Web/HTML CSS JS

[JavaScript] 기존 배열 빈 배열 만들기 How to empty an array (+배열은 const를 쓰자!)

쟈비쓰 2022. 11. 16. 23:01
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);  // 결과 : []

letconst와 달리 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