IT
강의의 댓글을 보고 해결책 만들기 (if와 else if)
letsgojieun
2021. 9. 20. 15:18
인터랙티브 디벨로퍼님의 유튜브 강의를 보다가 발견 한 댓글.
별 의심 없이 보고 있었다가 댓글을 보고 코드를 다시 봤다
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.
반응형