자바스크립트는 인터프리터 언어다. 인터프리터는 개발자가 작성한 소스코드를 컴파일하는 과정 없이 바로 실행한다.

ㅇ 자바스크립트의 변수 선언

  1. var (ES6 이전)

    재선언, 재할당 가능. 함수레벨 스코프, 변수 호이스팅 가능

  2. let (ES6 이후)

    재선언 X, 재할당 가능. 블록레벨 스코프, 변수 호이스팅 불가능

  3. const (ES6 이후)

    재선언 X, 재할당 X, 블록레벨 스코프, 변수 호이스팅 불가능

** 함수레벨 스코프 : 변수가 자신이 선언된 함수가 종료될 때 메모리에서 삭제

** 블록레벨 스코프 : 변수가 자신이 선언된 블록이 종료될 때 메모리에서 삭제

** 변수 호이스팅 : 변수를 선언하지 않고 값을 할당할 수 있다. var만 가능하다.

** 타입추론 : 변수에 할당된 값에 따라 변수의 타입이 변경되는 것


ㅇ 타입의 종류

  1. primitive type

    값을 가지는 타입(깊은 복사)

    String / Number / Boolean / Null / Undefined

  2. reference type

    주소를 가지는 타입(얕은 복사)

    Object

** Null과 Undefined의 차이점

→ Null은 개발자가 명시적으로 해당 변수의 값이 없음을 나타내기 위해 할당하는 값이다. Undefined는 정의되지 않았으며 변수를 선언하고 초기화하지 않았을 때 자바스크립트 엔진이 할당하는 값이다.

→ Null은 의미없는 특별한 값이 등록되어 있는 값이며, Undefined는 초기화도 되어있지 않은 값이다.

→ typeof null은 Object