타 언어에는 double, int 등 숫자 타입의 다양함이 존재하지만 자바스크립트에는 하나의 number 만 존재한다.
이는 정수만을 위한 타입이 따로 없고, 모든 수를 실수로 처리하기 위함이다.
Boolean, String, Symbol, null, undefined, Number 총 6가지가 존재한다.
Undefined 는 애초에 초기화도 정의되지 않다는 것을 의미하고
Null 은 값은 값이지만 의미없는 특별한 값이 정의 되어있다는 것을 의미한다.
변수를 선언하고 초기화 했을 때 선언 부분이 최상단으로 끌어올려지는 현상.
다른 것들은 적용되지 않지만 일반 함수선언문은 함수 호이스팅이 적용된다.
// 예제 1번
console.log(a)
var a = 1;
// => undefined, 선언은 호이스팅 되었지만 값은 호이스팅 되지 않는다.
// 예제 2번
a()
function a () {
return 1 + 1;
}
// => 2, 함수를 미리 실행하고 함수를 선언해도 호이스팅으로 인해 정상적으로 2 가 출력되는 모습이다.
실행 컨텍스트는 자바스크립트 코드들이 실행되기 위한 환경이다.
컨텍스트에는 전역 컨텍스트, 함수 컨텍스트 두 가지가 존재한다.
- 전역 컨텍스트를 하나 생성 후, 함수를 호출할 때마다 함수 컨텍스트가 생성된다.
- 함수 컨텍스트 생성시 내부에 변수객체, 스코프 체인, this 가 생성된다.
- 컨텍스트 생성 후 함수가 실행되는데 해당 함수 내의 변수들은 모두 변수가 선언된 객체내에서 찾고 값이 없다면 스코프 체인에 따라 상위 컨텍스트로 올라가며 찾는다.
- 함수 실행이 마무리되면 해당 컨텍스트는 사라진다. 페이지가 종료되면 전역 컨텍스트가 사라진다.