ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Notes from reading 🔖 You Don't Know JS Yet - 4
    JavaScript 2025. 6. 5. 00:03

    ## chapter 4

     

    • 함수나 블록 단위로 변수의 스코프를 한정짓는 것은 프로그래밍 언어의 기본
    • 스코프 안에는 다른 스코프가 올 수 있고, 해당 스코프에서는 해당 스코프 및 바깥 스코프 레벨의 변수만 접근할 수 있다.
    • 안쪽 스코프나 숨겨진 변수는 접근 불가능
    • 위와 같은 스코프를 렉시컬 스코프라고 한다 🎶

     

    • JS의 스코프는 특이점이 두 가지 있는데 호이스팅과 var이다.
    • var 변수는 블록 위치와 관계 없이 함수 기준으로 스코프가 생성된다.
      • var가 아닌 let, const는 TDZ 특징 때문에 특이하게 작동
    • 클로저는 JS와 같이 함수를 first class value로 취급하는 언어에서 렉시컬 스코프 모델을 사용했을 때 나타나는 자연스러운 결과물
    • 바깥 스코프에 있는 변수를 참조하는 함수가 있는 경우, 이 함수가 변수의 스코프와 다른 곳에서 실행될 때 함수는 함수가 정의된 스코프를 기준으로 바깥 스코프의 변수를 참조한다 -> 클로저

     

    • JS는 클래스를 통해서 사전에 구조를 정의하지 않아도 직접적, 명시적으로 객체를 만들 수 있는 몇 안되는 언어
    • 클래스를 만드는 방식은 프로토타입 상속 -> ES6 클래스 등장 이후로는 객체 지향/클래스 스타일로 개발하자는 흐름 생김
    • class 문법은 프로토타입을 기반으로하는 하나의 패턴에 불과함. 저자에 따르면, class 이후 프로토타입의 사용이 감소되는 쪽의 방향이 딱히 좋아 보이지는 않는 듯 🫥 (객체 위임이 더 JS 본질에 해당한다고 생각)
    • 객체는 그대로 두고 클래스 없이 프로토타입 체인으로 객체가 협력하도록 하는 작동 위임 패턴도 있다.

     

    • JS 커뮤니티는 타입스크립트, flow 같은 정적 타입 방식에 집중하지만, JS에서 타입은 어떻게 동작되는지 간과되는 분위기 💧
    • JS 타입 매커니즘의 단점 때문에 TS나 flow를 통해 해결해야 된다 ?? 꼭 그런건 아니다
Designed by Tistory.