-
JavaScript : let 을 통한, 선언 / 할당에 익숙해지자캡틴 코딩일기/javascript 2020. 2. 2. 22:39728x90반응형
JavaScript : let 을 통한, 선언 / 할당에 익숙해지자
** 상/하단의 광고 클릭 한 번이, 꾸준한 창작활동에 큰 도움이 됩니다 :) **
JavaScript를 공부하고 있는 곳에서 토요일마다 모 공유오피스로 찾아가서,
한주동안 공부했던 내용들 중에 궁금했던 부분들을 직접 엔지니어분들에게 문의하고,
주어진 문제풀이의 방향 또는 풀이에 참고할 수 있는 사이트 들에 대해 조언을 구하는.
이 시간만큼은 학구열을 불태우며 집중할 수 있는 '오피스 아워'라는 세션에 다녀왔다.
처음 다녀오던 날들에 비해, 궁금한 내용들을 미리 정리하거나,
당일 학습중에도 곧잘 물어보게 되었다고는 하나 아직도 좀 어색하다.
어색함의 이유는 두 가지 정도.
1) 알고 있는 내용인데, 나 편하자고 쉽게 물어보는건 아닐까?
(학원에서 표방하는 자기주도학습에 반항..)
2) 뭘 물어봐야 될지 모르겠다.
(자괴의 수준. 질문도 잘 하라고 하던데.)
한 때는 오피스아워를 마치고 집에 오는 길이 허공에 해대는 이불킥마냥 아쉬움이 한가득이었다.
시간이 조금 지났고, 워낙 기초적인 내용인 'let' 을 통한 선언/할당에 대한 깨달음을 기록으로 남기려고 한다.
함수에서 다루어야 하는 변수가 단순한 값이 아닌, 배열(array) / 객체(object) 또는 그 이상의 구조로
이루어진 전제에서 문제풀이를 할 때에는, 의식적으로 새로운 선언 / 할당을 통해 코드를 단순화 하는 습관을 가지자.
function getElementOfArrayProperty(obj, key, index) { let prop = obj[key]; if (Array.isArray(prop)){ return prop[index]; } else { return undefined; } }
위 코드는 객체(object)와 key (여기서 키는 배열이
되는 경우), 그리고 index값이 주어졌을 때,
key 안에서 주어진 index에 해당하는 값을
출력하는 함수이다.
* 키가 배열이 아닌 경우, index가 배열의 길이를
넘어서는 경우에는 undefined를 리턴한다.
선언/할당 없이 문제를 풀어보려고 아등바등
하던 때의 코드는 아래와 같다.
function getElementOfArrayProperty(obj, key, index) { if (Array.isArray(key)){ return obj[key][index]; } else { return undefined; }
세 번째 줄의 코드가 문제인데, 어떻게든 주어진 변수들을 활용하여 작성 해 보려고 노력했으나,
계속된 오류에 지치고 지쳐서 결국에는 gitHub의 헬프데스크를 통해 나와 비슷한 고민을 하신 분들의 해결 이력을 참고했다.
(그 결과가, 위의 정상적(?)인 코드이며, 선언/할당에 대한 깨닮음이 왔다!)
물론 더 간단히 해결할 수 있는 메소드들이 있을지도 모르고, 한 줄 더 코드를 작성하는 것이
장차 내가 해 나가야 할 일에 좋지 않은 습관처럼 남을수는 있겠으나.
지금은 의식적으로 let prop = obj[key];와 같은 선언/할당을 통해서 쉽게 해당 값에 접근할 수 있는
방법을 적용하는게 좋다고 결론내렸다.
** 상/하단의 광고 클릭 한 번이, 꾸준한 창작활동에 큰 도움이 됩니다 :) **
thumbnail Photo by Hannah Joshua on Unsplash
728x90반응형'캡틴 코딩일기 > javascript' 카테고리의 다른 글
Twittler(Twitter clone) 구현하기 - (1) 개요 (0) 2020.03.07 TIL : underscore.js _.reduce method 만들기(javascript) (0) 2020.03.07 TIL : underscore.js _.uniq method 만들기 (javascript) (0) 2020.03.05 Javascript Array method(배열 메소드) map 복습 (0) 2020.02.16 javascript : 너 정말 배열 맞냐? Array.isArray() (0) 2020.02.02