-
[2019.03.13] 순차적으로 추가되는 연속 콜백함수 구현개발 블로깅 2019. 3. 13. 14:56
오늘 AMA시간에 클로저 관련된 문제를 더 풀어보고자, 클로저 관련 문제를 어디서 구할 수 있나 여쭤보니까, 엔지니어분께서 한 문제를 풀어보라고 제시해주었다.
# 함수를 호출하는 방식과 해당 결과값
1234567var call = recursive();call(1); // 1call(1)(2); // 2call(1)(2)(3); // 6call(1)(2)(3)(4); // 10...cs # 처음에 이 문제를 접하고 생각이 들었던 문제풀이방식
- 한번씩 호출이 될 때마다 카운트를 증가를 시켜야한다. (콜백함수가 늘어나야하기때문에..)
- 카운트만큼 return 값을 콜백함수로 넘겨줘야한다.
- 반복적인 행위이므로 recursive하게 구현해야한다.
# 해당 문제에 대한 알고리즘 구현 소스코드
12345678910111213141516171819202122232425262728293031var recursive = function(){var fn;var count = 0;var uncount = 0;var result = 0;return function(val){uncount = count;result = val;if(count === 0){count++;return result;}fn = function(val){uncount--;result = result + val;if(uncount === 0){return result;}return fn;}count++;return fn;}}var call = recursive();call(1); // 1call(1)(2); // 2call(1)(2)(3); // 6call(1)(2)(3)(4); // 10cs 문제를 푸는데 1시간 정도 걸린 것 같다. recursive한 방식으로 어떻게 콜백을 count만큼 생성하여 return시킬지가 너무 어려웠다. 그래도 꽤 괜찮은 문제였다. 이제는 확실하게 클로저와 리컬시브는 익숙해진것 같은데..
왜 실전 시험에서는 괜히 떨어서 시험을 못푸는거지..!?!?!?ㅜㅜㅜㅜ
# 해당 문제를 풀어간 흔적
구글 홈에서 개발자도구로 작업해봄ㅋㅋ
확실히 개발자도구 엄청 쓸모있는 것 같다! 아무것도 없는 빈 페이지에 일반 javascript 소스코드만 작업해서 실행시켜보려면 이것저것 세팅을 좀 해야하는데, 개발자도구는 그냥 바로 실행시키면 된다!
그 전까지는 개발자도구를 알고는 있었지만, 이렇게 유용하게 쓰지는 않았는데, 요즘엔 개발자도구가 얼마나 좋은 기능인지 새삼 깨닫는 중이다!
반응형'개발 블로깅' 카테고리의 다른 글
[2019.04.03] 자료구조-해시테이블 (0) 2019.04.03 [2019.04.03]자료구조- B-tree (0) 2019.04.03 [2019.04.03] 자료구조-Tree (0) 2019.04.03 [2019.04.03] 자료구조-Stack, Queue, Linked List 개념 (0) 2019.04.03 [2019.03.04] Visual Studio Code 단축키 (0) 2019.03.04