200814_TIL

oh_ji_0·2020년 8월 14일
1

TIL

목록 보기
16/61

Today I learned

  • Fucntion
  • first class citizen
  • higher-order Function
  • 추상화
  • array methods

[Fucntion]

  • evaluation (평가, 대체)

    브라우저가 자바스크립트 코드를 evaluation (평가), 해석.

  • 함수를 정의하는 법

  • 자바스크립트는 변수가 찍히면 스코프를 타고 변수를 찾는다.

  • 함수도 변수처럼 취급한다. 자바스크립트 엔진이 변수처럼 함수 또한 값을 관리한다.

  • 선언식과 표현식

    함수에 할당하는 변수에 이름을 줘봤자 변수 값으로 접근해야 한다.

    • 함수 표현식

      함수 선언식과 다르게 호이스팅이 적용되지 않는다.

      함수 표현식은 할당과 실행의 위치가 중요하다.

    • 호이스팅

      함수 선언식으로 돼있는 애들은 맨 위로 끌어올린다. 어디에서나 불려질 수 있다

      함수 선언식의 호이스팅에 의존하는 것은 유지 보수 측면에서 좋지 않다.

      • 이해 상충

        'use strict' 처럼 엄격한 코드관리가 편한 유지보수를 만든다.

[first class citizen]

  • 일급 객체

    • 함수

      • 변수에 할당할 수 있다

      • 다른 함수의 인자로 전달될 수 있다

      • 다른 함수의 결과로서 리턴될 수 있다

        변수에 저장이 가능하기 때문에 배열의 요소, 객체의 속성값으로도 저장 할 수 있다.

[higher-order Function]

  • 고차함수

    다른 함수를 인자(argument)로 받거나 다른 함수를 리턴하는 함수

    • 콜백함수

      다른 함수의 인자로 전달되는 함수
      어떤 함수에 인자로 전달되고, 전달된 인자가 함수일 때 콜백함수라고 하며 함수 내에 루틴이 끝나고 호출된다고 하여 콜백함수라고 부른다.

  • 커리함수

    • 함수를 리턴하는 함수
    • 커리함수 용어를 사용할 때, 고차함수란 함수를 인자로 받는 함수라고 한정짓기도 한다.
  • 내장 고차 함수

    • filter

      • 함수의 형태로 filter 메소드의 인자로 전달돼야 한다.

      • 함수를 인자로 취하기 때문에 고차함수다.

      • 인자로 전달되는 콜백 함수에 배열의 요소를 다시 전달한다.

        function isBigEnough(value) {
          return value >= 10;
        }
        
        var filtered = [12, 5, 8, 130, 44].filter(isBigEnough);
        // filtered 는 [12, 130, 44]
    • forEach

    • find

    • map

      • map 함수의 인자로는 콜백 함수가 들어간다. 함수 실행 값이 아닌, 함수 자체가 들어간다.
    • reduce((accumulator , currentValue)=>{})

      • 무슨 값을 return 하느냐에 따라서 acc 의 값은 변화된다.
      • currentValue 값을 그냥 return 해버리면 accumulator 값은 currentValue 로 바뀐다.
    • sort

    • some

    • every

    • 폴리필

[추상화]

  • 추상화

    • 요약, 복잡한 어떤 것을 압축해서 핵심만 추출한 상태
    • 일상 속의 추상화들
    • 생산성의 향상
    • 자주 반복되는 함수의 작성, 추상화의 사례
      • 함수 - 상고 또는 논리의 묶음
      • 한번 만든 함수는 그 로직을 자세하게 생각하지 않아도 그 결과값이 도출됨
    • 고차함수 - 높은 추상화 단계
      • 사고의 묶음을 전달받아 처리하는 고차 함수는 더 높은 수준의 추상화
      • 생산성의 상승
  • 고차함수와 클로저

[array methods]

  • arr.flat()
  • arr.some()
  • arr.every()

[Comment]

@@ 오늘은 고차함수에 대해서 나갔다. 레슨을 듣고 솔로로 코플릿을 풀고, 새로 만난 페어분과 고차 함수 코플릿도 진행했다. 날이 덥고 습해서 땀을 삐질 흘리며, 집중해서 문제를 풀었다. 5시까지 페어 시간이었는데 진짜 5분 남기고 마쳤다.

map, reduce, filter 함수 등 함수를 리턴하는 고차함수에 대해서 여러 케이스 별로 객체와 배열을 조작하고, 재구조화 시키는 작업을 연습해 볼 수 있었다. 그 중 reduce 함수는 너무너무 무궁무진하게 활용점이 많은 메소드인 것 같다. 단순히 합산하는 용도로만 사용하고 forEach 문 위주로 문제를 풀다가 reference를 보고 저렇게도 활용할 수 있구나 싶어서 흥미로웠다.

그리고 오늘 배운 개념에 대해서 복습하는 오피스 아워 시간이 정말 재미있었다. 진행해주신 엔지니어 분이 워낙 말씀도 잘하시고 개념도 분명하게 잡아주셨고 비유도 찰떡같이 재미있게 해주셔서(쪼렙 함수....) 시간 가는 줄 모르고 봤다. 1시간 예정의 오피스 아워가 2시간 가득 채우고 끝났는데도 끝나서 뭔가 아쉬웠다. 개념적 부분을 짚어주신 부분도 흥미로웠지만 철학을 전공하셔서 그런지. 개념 공부법, 효율적으로 공부하는 법 등에 대해서도 많이 얘기를 해주셨는데(예를 들면 에빙하우스 망각곡선이라든지....) 분명 알고 있던 내용 같으면서도 느껴지는 깊이가 다른 느낌... 결론은 복습 많이 하자! 며칠 전에 헷갈리던 것을 며칠이 지나도 여전히 헷갈리면 게으른 것! 부지런해지자! 다.

profile
기본에 충실하고 싶습니다. #Front-end-developer

0개의 댓글