🍑 Javascript의 변수 정의
Javascript code는 Javascript engine을 통해 파싱되고 실행된다.
🍉 Javascript 코드 실행
- 엔진이 코드 실행 전 실행 컨텍스트를 생성한다.
- 생성 단계에서 엔진은 변수 선언을 읽는다.
2-1. 함수 선언문, 함수 표현식, 변수 등을 읽어 실행 컨텍스트에 저장한다.
변수의 경우, 실행 컨텍스트의 렉시컬 환경(Lexical Environment)을 구성한다.
함수 선언문 외에 변수는 값이 저장되지 않는다.
- 실행 단계에서 엔진은 변수 값을 할당한다.
3-1. 변수에 값을 할당하는 구문을 만나면 실행 컨텍스트에 값을 저장한다.
🍑 Hoisting
- 변수가 선언된 시점보다 앞에서 사용되는 현상
- var 변수의 undefined,
function FUNC_NAME () {}
이 해당된다.(함수 스코프)
- let, const변수(arrow function)는 생성 단계에서 초기화되지 않기 때문에 hoisting이 발생하지 않는다.(블록 스코프)
f2();
var f = function () {
console.log("function 1");
console.log("f3 : ", f3);
};
f();
let f4 = () => console.log("function 4");
function f2() {
console.log("function 2");
f4();
}
var f3 = () => console.log("function 3");
🍑 Javascript 내장 객체
- globalThis: 전역 객체를 지칭하는 변수
- window: DOM document를 포함하는 창을 나타내는 객체
전역 스코프에 선언된 변수는 모두 window의 property가 된다.
- document: 브라우저에 로드된 웹페이지, element 생성, 검색 등의 기능 제공
- Number: number primitive type을 감싸는 객체, 각종 변환 메소드 제공
- Math: 기본적인 수학 연산 메소드, 상수를 다루는 객체
- Date: 특정 시점의 날짜를 표시하기 위한 객체
- String, JSON: string primitive type을 감싸는 객체, 문자열 조작을 위한 여러 메서드 포함, JSON 객체를 다루기 위한 메서드 포함
- Number나 String type을 new를 통해 선언하면 그것은 객체가 된다.
tip
VARIABLE instanceof OBJECT: 변수가 해당 오브젝트 타입인지 검사