기타

[프리온보딩] 기업과제 #6-2 (4주차) - 중첩함수 이해하기 ,utills 모듈

이지영 2022. 9. 25. 19:54

중첩 함수

  • 특정 함수의 내부에 선언된 함수
  • C나 Java 등에서 사용 불가능, 자바스크립트에서 사용 가능
    • 자바스크립트에서는 외부 함수의 최상위 레벨에만 중첩 함수 작성 가능
    • 함수 안의 if문와 while문 등의 문장 블록 안에는 중첩 함수 작성 불가능
  • 중첩 함수의 참조는 그 중첩 함수를 둘러싼 외부 함수의 지역 변수에 저장
    • 외부 함수의 바깥에서는 읽거나 쓰기 불가능
  • 자신을 둘러싼 외부 함수의 인수와 지역 변수에 접근 가능
    • 외부 함수의 변수 유효 범위가 그 함수의 중첩 함수에 미침 (클로저의 핵심 구성 요소)
      • 간단한 예시 1)의 중첩 함수 sumSquare는 변수 x 사용
      • 변수 x는 외부 함수인 example의 인수
let sum = a =>  b => { return a + b; };

 

이걸 일반 function으로 바꿔보기.

let sum = function(a) {
    return async function(b) {
        return a + b;
    };
};

sum은 아래와 같이 쓸 수 있게 됩니다.

let sum = function a(x) {    // Outer function
  function b(y) { // inner function
    return x - y; 
  }
  return b;      
}

console.log(a(5)(4))

내코드에서 사용해보자!!

✍️과제에서 구현해야하는 부분은 총 4가지 인데

  • 고객명(user_name) : 고객ID 를 참조하여 실제 이름으로 보여져야 합니다.
    • 고객명을 누를 경우 사용자 상세화면으로 이동합니다.
  • 브로커명(broker_name) : 예시) OO증권, brokers.json 를 참조하여 실제 이름으로 보여져야 합니다.
  • 계좌상태(status) : 예시) 운용중, accountStatus.json 를 참조하여 실제 이름으로 보여져야 합니다.
  • 추가 구현 사항 : brokerFormat.json 의 형식에 맞춘 계좌번호가 표기 (예: 123-123-123123-10)

1.먼저 json-server를 구축해주자!

 npx json-server --watch ./src/server/db.json --port 4000

2.Data json 파일 import 해오기

import broker from '../../server/brokers.json';

1. 고객명 

 accounts의 id 를 참조해서 users 의 name으로 바꾸면됨

첫번째 인자(users)에는 useNameList라는 변수에 배열이 할당되고 두번째 인자(id)에는 account의 id가 들어가게 된다 . 두개의 인자에 각각의 id에 해당하는 값이 같으면 그값을 리턴해주고 그배열의 name 값을 추출해주면 값을 구할 수 있다. 

2.브로커명

먼저 과제에서 제공해주는 데이터를 사용해주어야 하는데 그렇게 하려면 데이터가공이 따로 필요하다 백엔드가 없기 때문에 데이터를 직접 다루어 주어야 했다.

 이데이터를 key value를 포함하는 object array 형태로 만들어 준후 사용해 주었다.

3.계좌번호

2번과 같은 방식이다

4.+ 추가 구현사항

이게 젤 어려웠는데 구현방식은 위와 같다.

✍️자주쓰는 함수는 util 함수로 분리하여 사용해보자!

이렇게 하면 한눈에 알아볼수있고 재사용에도 편리하다 .