반응형
개발 중, 배열1에서 배열2로 각 요속들을 옮기는 코드에서 당연히 let으로 빈 배열을 선언했는데, eslint error가 났다.
push하는 코드가 있는데 왜 경고가 나지?
const는 값 변경이 불가능한 것 아니었나? 라는 생각이 들었다.
하지만, const로 선언하고 push(), pop()을 해도 잘 동작한다.
이유를 찾아보니, const는 선언과 동시에 할당이 이루어질 때 사용하는 것으로, 재할당이 불가능하다는 특징이 있는데
push(), pop()의 경우 배열을 다른 값으로 교체하는 것, 재할당하는 것이 아닌, 기존 배열 원본을 수정하는 것이므로 가능하다는 것이다.
배열은 포인터로 선언이 되어있는데, push, pop은 포인터를 바꾸는 것이 아닌 같은 포인터의 값만 변경시키는 것이다.
+덧붙여서, 딱 어제 Effective Typescript책에서 읽은 내용인데
추가로 Typescript의 readonly는 재할당은 가능하지만, 원본을 변경하는 것은 안된다.
push(), pop() 사용은 안되지만, 재할당을 하거나, concat() 사용은 가능하다.
const와 비슷한 듯 반대인 느낌이다.
반응형
'🔠 프로그래밍 언어 > 💛 Javascript' 카테고리의 다른 글
[Javascript] setInterval 바로 실행하기 (0) | 2022.03.23 |
---|