underbar clear;
Lv.4 class clear;
다섯 번째 주가 끝났다. 그러나 이틀간의 휴식을 취하고 수요일부터 공부했다. 수요일엔 Lv.4 학습들을 전부 복습했고, 목요일엔 그것들에 대해 복습했고, 금요일엔 언더바 하루만에 끝내기! 같은 목표를 잡고 시작했다. 결과는 실패했지만 토요일 아침에 제출하긴 했다. 어떠한 과제가 주어졌을 때, 항상 나는 객체에서 많이 무너진다. 처음엔 객체에 자신이 있었는데 점점 하다 보니까 객체가 나에게 까불지 말라고 경고했다. 어우, 피곤해.
언더바는 크게 세 개의 고비가 있고, 이 고비만 잘 넘긴다면 빠르게 전진할 수 있다. 하나는 forEach 구현, 나머지 두 개는 flatten과 shuffle 구현이다. (사실 once도 어려웠다.) forEach는 차근차근 생각해 보면 풀 수 있었는데, 아, 저 두 개는... 해설집을 봐도 모르겠어서 한동안 원리에 대해 씨름했다.
마지막 과제를 남겨 두고 있다. (사실 지금 수요일이고, 저번 주 것을 지금 작성하는데, 이미 끝내긴 했음.) 과제를 계속 하면서 느낀 건, 나는 참 많이 부족하다는 거. 왜 이렇게 급하게 달렸지? 싶은 생각도 있다. 하다 보니까 그렇게 되긴 했는데, 참, 너무 빨리 달려서 주변의 것들을 못 본 느낌이 강하다. 과제를 제출하면서 다른 사람들의 것도 한 번 봤는데, 같이 들어오신 어떤 분은 무슨 Lv.4 과제를 일주일 안에 내시더라. 이런 거 볼 때마다 더 느낀다. 나한테는 빠른 게 소용이 없었구나. 내 페이스에 맞춰서 재미있다고 느껴지는 공부들을 더 열심히 해야겠다고 느꼈다.
과제 마지막이 될 다음 주도 파이팅. 페어 프로그래밍 두 번은 언제 해야 되나.
1. for문처럼 돌리기만 하는 건 forEach
2. 돌리면서 만들어 주는 건 map (활용성은 이게 더 높다)
3. if(body.childNodes === true)는 틀리지만 if(body.childNodes)는 true이다.
4. .bind는 함수로 만들어서 가지고 있지만
.apply나 .call은 함수를 실행시켜 버리기 때문에 그 둘의 차이에 대해 잘 알아야 한다.
5. 재귀함수는 직관적이지만 사용할 때마다 쓸데없는 부분도 전체 구분을 매번 돌아야 하는 등 쓸데없는 메모리 낭비를 할 수가 있다.
6. 그에 비해 for문은 재귀함수보다 직관적이지는 않지만 딱 원하는 만큼만 돌 수 있다.
7. //현재숫자는 제일 마지막 인덱스이다. (thisNum === [4])
let thisNum = newArray[currentNum];
//제일 마지막 인덱스는 랜덤 인덱스이다. ([4] ---> [2])
newArray[currentNum] = newArray[randomNum];
//랜덤 인덱스는 제일 마지막 인덱스이다. ([2] ---> [4])
newArray[randomNum] = thisNum;
스크립트를 쭉 읽는 방식으로 실행이 되기 때문에 마지막 랜덤 넘버는 두 번째 줄의 영향을 받지 않은 2가 된다. (두 번째 줄에서 덮어쓰웠는데 왜 4가 아니라 2지? 같은 생각을 정말 종일 했다.. ㅎ)
8. 변수 선언을 어디에 해 주느냐에 따라 값이 많이 바뀐다. 요소를 obj 안에 넣고 다시 obj가 초기화가 되어야 되는 구문이 있었는데, obj를 돌고 있는 클로저 밖에 선언해 주니 한 번 돌고 나오더라. 조심해야 한다.