[DAY17] Today I Learned

1nxeo·2023년 2월 22일

항해99

목록 보기
17/63
post-thumbnail

1. this

[KEYWORD]
전역, 전역객체, 렉시컬 환경, 전역 객체의 렉시컬 환경, 메서드, 함수, 프로퍼티, 할당, 호출
  1. 전역 객체란 무엇을 의미하는 것 일까요?

  2. 다른 언어의 객체와 자바스크립트의 객체는 어떻게 다를까요?

  3. 그렇다면 this는 어떻게 달라질까요?

  4. 함수와 메서드의 차이에 대해서 조금 더 알게된게 있을까요? 지난번에 했던 답과는 어떻게 다를까요?

  5. 책에서 self 변수로 선언을 해서 만들어서 구현하려고 했던 'this'는 어떤 것 때문에 그렇게 구현했을까요?
    변수를 활용해서 우회하지 않으면, this는 전역객체를 가리키게 되기 때문이다.

  6. 다시 함수와 메서드의 차이를 말씀해주세요
    기준 : 독립성
    함수 : 그 자체로 독립적인 기능을 수행
    메서드 : 자신을 호출한 대상 객체에 관한 동작을 수행

  7. 프로퍼티에 할당, 메서드로서의 호출을 설명해주세요

  8. "this 가 주는 인상"이라는 개념을 본인이 생각한대로 아는만큼 작성해주세요.


2. 콜백함수

[KEYWORD]
제어권, 콜백함수, 고차함수, 콜백지옥
  1. 프로그래밍의 제어권이라는 것은 무엇을 말하는 걸까요?
    어떤 시점에 콜백을 호출할지,인자는 어떤 값들을 지정할지,this에 무엇을 바인딩 할지 등이다.

  2. 콜백 지옥이란 뭘까요?
    콜백 함수를 익명 함수로 전달하는 과정이 반복되어 코드의 들여쓰기 수준이 헬 수준인 경우
    주로 이벤트 처리 및 서버 통신과 같은 비동기적 작업을 수행할 때 발생
    뭐가문제? 가독성, 수정도 어려움

  3. 추상화란 뭘까요?
    우리가 객체를 만드는 과정은 현실 또는 가상의 존재를 프로그램 내에서 사용할 용도에 맞게 적절하게 설계하는 과정.

복잡한 자료, 모듈, 시스템 등으로부터 핵심적인 개념 또는 기능을 간추려내는 것

추상화(abstract)란 복잡한 어떤 것을 압축해서 핵심만 추출한 상태로 만드는 것이다. 일상생활에서도 쉽게 찾을 수 있다. 대중교통을 이용할 때 교통카드를 사용하는 과정 안에도 수많은 원인과 결과가 있듯이말이다.

자바스크립트와 같은 프로그래밍 언어 또한 추상화의 결과라고 볼 수 있다.
❗ 함수라는 것도 반복되는 로직을 별도로 작성해 둔 추상화 사례이다!
추상화의 관점에서 함수는 사고(thought) 또는 논리(logic)의 묶음이다.

  • 값 수준의 추상화: 값(value)을 전달받아 처리하는 수준
  • 사고의 추상화: 함수(사고의 묶음)을 전달받아 처리하는 수준

    그럼 추상화와 콜백함수는 어떻게 연결되는걸까?
    위에서 '고차 함수'에 대해 언급한바있다.
    추상화라는 개념을 이해하고 다시 콜백함수-고차함수를 생각해보면
    추상화 수준이 높아진 것임을 깨달을 수 있다.
    함수로 추상화된 것을 고차함수에 넘김으로 추상화를 한 단계 더 높이게 되는 것이다!
    ( => 값 수준의 추상화 ---> 사고의 추상화 )

    데이터를 추상화하면 아래의 장점이 있다.
    1) 사용자가 낮은 수준의 코드를 작성하지 않도록 도움
    2) 코드 중복 방지 및 재사용성 향상
    3) 사용자에게 영향을 끼치지 않은채로 독립적으로 클래스의 내부 구현 변경 가능
    4) 중요한 세부 정보만 사용자에게 제공하므로 응용 프로그램 또는 프로그램 보안 향상에 도움
    => 위의 내용을 한 단어로 정리하면 '효율'적이라는 것이다. 즉, 추상화 수준이 높아질수록 효율적 = 생산성(productivity)이 향상된다는 것이다.

    다시 콜백함수와 고차함수로 돌아와서 정리하면 아래와 같다.
    => 콜백 함수를 전달받는 함수가 자주 호출된다면 함수 외부에서 콜백 함수를 정의한 후 함수 참조를 고차 함수에 전달하는 편이 효율적이다.(모던 자바스크립트 p.185)
profile
항상 피곤한 인서의 개발블로그

0개의 댓글