HYEWON JUNG의 개발일지
실행컨텍스트(VE, LE, record, hoisting 등) 본문
실행 컨텍스트 = 코드에 제공할 환경 정보들을 모아놓은 객체
=> 선언된 변수를 위로 끌어올리고 /hoisting
=> 외부환경정보를 구성하고
=> this를 바인딩
콜스텍 = 실행콘텍스트가 담기는 장소
=> 코드의 순서를 보장함
실행콘텍스트가 있는 장소를 대표적으로 스택과 큐로 나눌 수 있는데 스택은 Last in First out 컵 모양을 생각하면 되고 , 큐는 First in First out 위아래가 뚫린 원기둥이라고 생각하면된다.
VariableEnvironment
=> 현재 실행할 코드에 식별자 정보 record를 지님
=> outer를 지님
=> LexicalEnvironment의 snapshot
LexicalEnvironment
=> 현재 실행할 코드에 식별자 정보 record를 지님
=> outer를 지님
=> 실시간 반영
VE 와 LE는 완전히 같지만 진행상황에 따른 변경사항을 유지함과 유지 하지 않음 이 다르다.
Record = 식별자 정보 //식별자 정보를 컨텍스트에 기록이라 외우기
=> 컨텍스트 내부를 처음부터 끝까지 순서대로 훑어가며 수집.
# 수집만 할 뿐 실행은 하지 않음.
record 는 호이스팅을 품고 있다.
호이스팅 = 가상개념
=> 식별자 정보와 함수를 끌어올림
# 모든 함수를 전부 끌어올리진 않는다.
if(함수= 선언식){
전부 호이스팅
} else if(함수=표현식){
선언부만 호이스팅
}
하지만 선언식 함수를 사용할 경우 코드가 꼬일 확률이 높으니 함수를 작성할 때 표현식 함수를 주로 사용하기!
'JavaScript' 카테고리의 다른 글
Math 메소드 살펴보기!Math.abs() Math.ceil() Math.floor() Math.round()Math.trunc()Math.max()Math.min()Math.pow()Math.sign() Math.sign() (0) | 2023.11.26 |
---|---|
콜백함수 (제어권, this binding) (0) | 2023.10.30 |
데이터 타입 > 얕은 복사 , 깊은 복사 (0) | 2023.10.27 |
Map(); (1) | 2023.10.26 |
일급 객체로서의 함수 (0) | 2023.10.26 |