본문 바로가기
IT 개발

강의의 댓글을 보고 해결책 만들기 (if와 else if)

by takoapps 2021. 9. 20.

 

인터랙티브 디벨로퍼님의 유튜브 강의를 보다가 발견 한 댓글.

별 의심 없이 보고 있었다가 댓글을 보고 코드를 다시 봤다

 

if의 this.point.unshift는 배열의 앞에 새로운 값을 차곡차곡 넣어주고

else if의 this.point.splice는 배열에서 값을 잘라내주는데,

밑의 글을 참고하면 splice(-1)이므로, start값이 음수라 배열의 끝에서부터 요소를 세면서

deleteCount는 따로 존재하지 않기 때문에 (생략) start부터의 모든 요소를 제거한다

 

출처 : https://im-developer.tistory.com/103

 

하지만 위에서 if를 충족하면 else if 조건문으로 넘어가지 않기 때문에

if의 코드 블록인 unshift만 계속 실행되어 배열 앞의 길이가 계속 추가만 되는 것 (=배열의 길이가 계속 길어짐)

그리고 if문을 충족하였으므로 위의 코드 블록 실행 후 리턴되어 밖으로 빠져나간다.

 

이럴 땐 아예 if - else if가 아닌 둘 다 if문으로 빼주어서 각각 조건을 충족할 때 두 개의 코드 블록 모두 실행이 될 수 있도록 하면

배열의 길이가 계속 길어지는 걸 splice를 통해 막을 수 있다.



 

 

Ref.

https://www.youtube.com/watch?v=hCHL7sydzn0 

https://im-developer.tistory.com/103

반응형