모던 자바스크립트 Deep Dive


모던 자바스크립트 Deep Dive 스터디

1주차

💫 4장 변수

var 키워드의 단점

  • 블록레벨 스코프를 지원하지 않고 함수레벨 스코프를 지원한다 → 의도치 않은 전역변수가 생성될 수 있다.
  • 호이스팅의 문제
  • 자바스크립트는 선언단계와 초기화단계가 나누어져 실행된다

    let a = 30;
    let a;
    a = 30;
  • 위처럼 한 줄에 선언과 초기화를 모두 작성하든, 아래처럼 선언과 초기화를 두 줄에 나누어 작성하든 자바스크립트는 똑같이 선언단게와 초기화단계를 나누어 실행한다.
  • 변수의 호이스팅은 이러한 이유로 발생하는 것이다.
  • 가비지 콜렉팅

  • 메모리를 사용한 후 개발자가 이를 직접 반환해주어야 하는 언매니지드 언어가 있고, 참조되지 않는 메모리는 언어 차원에서 담당하여 반환해주는 매니지드 언어가 있다.
  • 자바스크립트는 가비지 콜렉팅(참조되지 않는 메모리는 반환)이 되는 매니지드 언어이다.
  • 🏜 5장 표현식과 문

  • 값이란 표현식이 평가되어 생성된 결과이다.
  • 표현식은 값으로 평가될 수 있는 문이다.
  • 토큰이란 문법적인 의미를 가지며, 문법적으로 더 이상 나눌 수 없는 코드의 기본 요소이다.
  • 자바스크립트는 세미콜론 자동 삽입 기능(ASI, Automatic semicolon insertion)이 존재한다.
  • 변수에 할당할 수 있으면 표현식이다.
  • 🌊 6장 데이터 타입

    자바스크립트의 타입

  • 자바스크립트의 타입은 크게 원시타입과 객체타입으로 분류할 수 있다.
  • 개행 문자에는 라인 피드(Line Feed)와 캐리지 리턴(Carriage Return)이 있다.
  • ECMAScript 사양에 숫자 타입은 배정밀도 64비트 부동소수점 형식을 사용한다.
  • 자바스크립트를 이루고 있는 거의 모든 것은 객체이다.
  • 📑 7장 연산자

    증가/감소 단항 산술연산자의 위치

  • ++x, x++
  • 연산의 순서가 다르다.
  • 암묵적 타입 변환

  • 자바스크립트는 정적 타입 언어와 다르게 변수를 선언할 때 타입을 선언하지 않는다.
  • 타입은 추론되고, 재할당에 의해 변수의 타입은 언제든지 동적으로 변할 수 있다. → 동적 타이핑
  • 따라서 자바스크립트는 암묵적 타입 변환을 한다.
  • typeof null

  • object로 뜬다. 자바스크립트가 인정한 오류.
  • ===로 체크하자.
  • 심화연산자

  • 옵셔널 체이닝 (?)
  • null 병합 연산자 (??)
  • 프로퍼티 삭제 (delete)
  • 인스턴스 생성 (new)
  • instanceof
  • in