인터랙티브 디벨로퍼님의 유튜브 강의를 보다가 발견 한 댓글.
별 의심 없이 보고 있었다가 댓글을 보고 코드를 다시 봤다
if의 this.point.unshift는 배열의 앞에 새로운 값을 차곡차곡 넣어주고
else if의 this.point.splice는 배열에서 값을 잘라내주는데,
밑의 글을 참고하면 splice(-1)이므로, start값이 음수라 배열의 끝에서부터 요소를 세면서
deleteCount는 따로 존재하지 않기 때문에 (생략) start부터의 모든 요소를 제거한다
하지만 위에서 if를 충족하면 else if 조건문으로 넘어가지 않기 때문에
if의 코드 블록인 unshift만 계속 실행되어 배열 앞의 길이가 계속 추가만 되는 것 (=배열의 길이가 계속 길어짐)
그리고 if문을 충족하였으므로 위의 코드 블록 실행 후 리턴되어 밖으로 빠져나간다.
이럴 땐 아예 if - else if가 아닌 둘 다 if문으로 빼주어서 각각 조건을 충족할 때 두 개의 코드 블록 모두 실행이 될 수 있도록 하면
배열의 길이가 계속 길어지는 걸 splice를 통해 막을 수 있다.
Ref.
반응형
'IT 개발' 카테고리의 다른 글
[github] fork 한 repository 잔디 안 심어질 때 + non-fast-forward 및 default branch 관련 에러 해결방법 (0) | 2021.09.26 |
---|---|
Typescript 타입 정리 (0) | 2021.09.21 |
slice와 splice 차이점과 sort를 이용하여 배열의 오름차순 정렬하기 (0) | 2021.09.19 |
배열에 값 채우기 Array().fill().map (0) | 2021.09.17 |
CRA 리액트 웹팩 버전 안 맞는 에러 : npm start 안될 때 (모든 걸 다 시도했다) (2) | 2021.09.16 |