function YY(arr) { return arr.reduce(function(acc, cur){ if(acc.length >= cur.length){ //acc보다 길거나 같으면 acc리턴 //짧으면 쉬지말고 긴거 나올때 까지 반복문 cur 돌려!! return acc }else{ return cur } }, '') }
엄청나게 어리석은 짓을 했다. 코드를 작성중
'uncaught typeerror: cannot read property 'length' of undefined' 에러에 꽂혀서 acc 파라미터가 length 메소드를 못 읽는 줄 알고 acc.length 없이 코드를 작성하기 위해 몇 시간동안 노력을 했는데 그게 아니었다... 입력한 배열 내에는 if(acc.length < cur.length) 조건문과 다른 경우(===)의 요소들이 있었고 에러는 단순히 길이가 같은 경우를 처리하지 못하기에 length메소드를 읽지 못한다고 뜬 것이었다. 고생한 시간을 생각하면 너무 화가 나지만 중요한 것을 배웠다.
반드시 기억하자
1. 절대로 넘겨짚지 말고 에러가 난 이유를 꼼꼼하게 살피자
2. cur은 미친 반복문이다. 가만히 놔두면 배열 끝까지 달려간다.
3. acc는 reduce함수의 브레이크이다.
cur은 반복문이여서 acc가 없으면 반복 과정을 저장하지 못하고 달리다가 맨 마지막 요소를 리턴한다.
위의 공식에서도 드러나듯 acc가 cur의 브레이크 역할을 해주고 있는 것이다. acc덕분에 cur의 반복을 멈출 수 있다.
리액트 spa
다음주에 마저 정리