FE RYAN
완벽하지 않으면 어때
FE RYAN
전체 방문자
오늘
어제

블로그 메뉴

  • 💾 깃허브 링크
  • 홈
  • 태그
  • 분류 전체보기 (151)
    • 개인프로젝트 (8)
      • 개인 포트폴리오 웹앱 (6)
      • 프론트엔드 기술면접 아카이빙 웹앱 (2)
    • 기록 (121)
      • 원티드 프리온보딩 인턴십 (0)
      • 코드스테이츠 프론트엔드 (75)
      • 생각들 (3)
      • Today I learned (32)
      • 회고 (9)
      • 리뷰 (1)
    • 개발 (17)
      • React (3)
      • Javascript (7)
      • CSS (1)
      • HTML (3)
      • HTTP (1)
      • 자료구조 (0)
      • 알고리즘 (2)
    • 코딩테스트 (2)
      • 백준 (2)
      • 프로그래머스 (0)
    • 디자인 (1)
      • UI & UX (1)
    • 수학 (0)
    • 자기계발 (0)

공지사항

인기 글

태그

  • 타입스크립트
  • 부트캠프
  • 자바스크립트
  • Til
  • 회고
  • 포트폴리오
  • 프론트엔드
  • css
  • 리액트
  • seb 39
  • useMemo
  • 딥다이브
  • 메인프로젝트
  • seb39
  • 원시타입
  • 코드스테이츠
  • HTML
  • ES6
  • 신입개발자
  • 자바스크립트 딥다이브

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
FE RYAN

완벽하지 않으면 어때

기록/Today I learned

TIL- 22.02.11 금

2022. 2. 11. 20:10
728x90

ca es6 강의 사전지식 부족부분 : forEach(array메소드임.)

4-4 중첩 if문 줄이기
고차함수를 만들고 외부에서 변수로 함수를 호출하면(고차함수를 안에 품고 있는 상위의 함수) 외부에서 변수로 함수를 호출했던 함수 표현식이 고차함수를 안에 품고 있는 함수의 return값이 된다.

const func () => {
  return () => {
    console.log('hello')
  };
};
const innerFunc = func();
innerFunc(); // hello
const func = (msg) => {
  return () => {
    console.log(msg)
  };
};
const innerFunc1 = func('hello');
const innerFunc2 = func('javascript');
const innerFunc3 = func();

innerFunc1(); // hello
innerFunc2(); // javascript
innerFunc3(); // undefined

if문 중첩 제거하기 - 수정 전 코드

const onClickNumber = (event) => {  
  if (operator) {
      if(!numTwo) {
      $result.value = '';
    }
    numTwo += event.target.textContent;
  } else {
    numOne += event.target.textContent;
  }
  $result.value += event.target.textContent; // 현재 중복되는 절차
};

1단계. if문 다음에 나오는 공통된 절차를 각 분기점 내부에 넣는다.

const onClickNumber = (event) => {  
  if (operator) {
      if(!numTwo) {
      $result.value = '';
    }
    numTwo += event.target.textContent;
    $result.value += event.target.textContent; // 공통된(현재 중복되는) 절차를 각 분기점 내부에 넣는다.
  } else {
    numOne += event.target.textContent;
    $result.value += event.target.textContent; // 공통된(현재 중복되는) 절차를 각 분기점 내부에 넣는다.
  } 
};

2단계. 분기점에서 짧은 절차부터 실행하게 if문을 작성한다.

const onClickNumber = (event) => {
      if (!operator) {
        // 아래 if문(더 짧은 절차)이 위로 올라오고 조건이 바뀜.
        numOne += event.target.textContent;
        $result.value += event.target.textContent;
        return;
      } else {
        // 위의 if문이 아래로 내려오고 조건이 바뀜.
        if (!numTwo) {
          $result.value = '';
        }
        numTwo += event.target.textContent;
        $result.value += event.target.textContent;
      }
    };

3단계. 짧은 절차가 끝나면 return(함수 내부의 경우)이나 break(for문 내부의 경우)로 중단한다.

const onClickNumber = (event) => {
      if (!operator) {       
        numOne += event.target.textContent;
        $result.value += event.target.textContent;
        return; // 함수 내부라 return으로 절차를 중단시킨다.
      } else { // return 이후 else는 더이상 실행되지 않기 때문에 else문을 제거해야 한다.
        if (!numTwo) {
          $result.value = '';
        }
        numTwo += event.target.textContent;
        $result.value += event.target.textContent;
      }
    };

4단계. else를 제거한다(이 때 중첩 하나가 제거된다).

const onClickNumber = (event) => {
      if (!operator) {       
        numOne += event.target.textContent;        
        $result.value += event.target.textContent;
        return; // 함수 내부라 return으로 절차를 중단시켰으므로 else를 제거하여 한단계를 줄였다.
      }
      // 이 아래로는 operator가 존재하는 경우에만 실행되기 때문에 else문으로 감쌀 필요가 없다.
      if (!numTwo) {
        $result.value = '';
      }
      numTwo += event.target.textContent;
      $result.value += event.target.textContent;
    };

5단계. 다음 중첩된 분기점이 나오면 1~4의 과정을 반복한다.

728x90
저작자표시 비영리 (새창열림)

'기록 > Today I learned' 카테고리의 다른 글

TIL- 22.02.15 화  (0) 2022.02.15
TIL- 22.02.14 월  (0) 2022.02.14
TIL- 22.02.10 목  (0) 2022.02.10
TIL- 22.02.09 수  (0) 2022.02.09
TIL- 22.02.08 화  (0) 2022.02.08
    '기록/Today I learned' 카테고리의 다른 글
    • TIL- 22.02.15 화
    • TIL- 22.02.14 월
    • TIL- 22.02.10 목
    • TIL- 22.02.09 수
    FE RYAN
    FE RYAN

    티스토리툴바