#모호했던 정의
undefined :
변수에 값이 지정되지 않은 경우나 데이터 영역의 메모리 주소를 지정하지 않은 식별자에 접근할 때
. 혹은 [ ] 로 접근하려할때, 해당 데이터가 존재하지 않는 경우
return문이 없거나 호출되지 않는 함수의 실행 결과
*없다 를 표현할 때 undefined를 사용하면 안돼 !
null : '없다'를 명시적으로 표현할 때
*typeof null* object 임 js 자체의 버그 !!!!!! 조심
#실행 컨텍스트
실행할 코드에 환경 정보들은 모아놓은 객체
1 - 선언된 변수를 위로 불러옴 = 호이스팅(hoisting)
2 - 외부 환경 정보를 구성.
3 - this의 값을 설정하게됨.
실행 컨텍스트?
콜-스택
스택 : Last in First out 마지막에 쌓인거만 튕겨나옴
큐 : First in First out - 밀어내기
환경정보들은(코드들은 동일한 환경에 묶인 것들 끼리 모여서 객체를 이루고) -> 콜스택에 쌓아놓는다.
실행되면 없어지고 -> 실행되면 없어진다.
이 방법으로 코드의 환경 및 순서를 보장한다.
실행 컨텍스트 안에 있는 이 객체에는 세가지가 담겨있다.
Variable Environment [VE]
- 현재 컨텍스트 내의 식별자 정보(=record)를 지님.
var a =3; 에서 var a 가 식별자
- 외부환경 정보도 가지고 있음.
- 선엄시점(최초에 생길 때)에 LE의 snapshot
Laxical Environment
- VE와 동일하지만 변경사항으로 실시간으로 반영 / VE는 그대로 간직함
ThisBinding
이 두가지의 담기는 항목은 완벽하게 동일 허나,
VE 스냅샷을 유지
LE 스냅샷 유지 X 실시간으로 변경사항을 계속 반영.
Laxical Environment (LE)
스코프
a. 식별자에 대한 유효범위를 의미.
b. 대부분 언어에서 존재, 당연히 js에서도 존재
스코프 체인
a. 식별자의 유효범위 안에서부터 바깥으로 차례로 검색해 나가는것
#this란 무엇이냐
this는 실행 컨텍스트가 생성될 때 결정됨.
= this를 binding 한다.
this는 상황에 따라 바뀌며 함수 내에 있어도 예외는 없다.
10일차 TIL(DOM 뜯어보기) (0) | 2023.05.30 |
---|---|
9일차 TIL (콜백함수) (1) | 2023.05.28 |
7일차 TIL (ES6, Map(), Set()) (0) | 2023.05.24 |
6일차 TIL (기초 삼항연산자, switch문 ) (0) | 2023.05.22 |
5일차 TIL (2) | 2023.05.19 |