오늘 수업은 꽤 난이도가 있었다. 수업을 들으면서 기본적인 지식의 한계를 느꼈다. 그래서 오늘은 코드가 아닌 이해가 어려웠던 내용들을 강의를 통해 내가 이해한 위주로 작성하고자 한다.(틀린 부분이 있으면 댓글 부탁드립니다..)
1. 실행 컨텍스트
1) 정의: 실행할 코드에 제공할 환경 정보들을 모아놓은 객체
2) 실행 컨텍스트 객체의 실체(담기는 정보)
- Variable Environment: 이 부분에 정보를 먼저 담고 이를 그대로 복사해서 이 보다 작은 Environment에 저장을 하는 용도
- Lexical Environment: VE와 역할은 동일하나 규모가 작고, LE 부분에서는 VE와는 다르게 변경사항을 실시간으로 반영한다.
- ThisBinding
2. 호이스팅(Record와 관련)
1) 정의: 식별자 정보를 끌어올리는 행위로 레코드 수집 과정이다.
2) 호이스팅 과정: 코드실행 → 전역(in) → 전역(중단) + outer(in) → outer(중단) + inner(in) → inner(out) + outer(재개) → outer(out) + 전역(재개) → 전역(out) → 코드종료
3) 호이스팅 시, 함수 선언문은 전체가 위로 끌어올려지고, 함수 표현식은 '=' 이전의 것들만 끌어올려진다. 따라서 함수 표현식을 사용하면 코드 수정 시 이전에 작성한 코드들은 영향을 받지 않는다.
3. Outer Environment Reference
1) 스코프: 식별자에 대한 유효범위(식별자는 let arr = [1,2]에서 arr을 말한다)
2) 스코프 체이닝: inner 함수가 실행되면 Call Stack에서 사라지기 때문에 outer는 inner 안에 있는 레코드를 식별할 수 없다. 따라서 상위 컨텍스트의 정보를 읽어오게 되는데, 이를 의미한다.
4. This
1) 함수에서 this는 전역 객체를 호출한다.
2) 메서드에서는 .this에서 . 앞에 있는 객체가 호출의 주체가 된다.
5. 유사배열
1) 조건: 객체 안에 length가 필수적으로 있어야 하며, 번호가 0부터 1씩 증가해야 한다.
2) 유사 배열은 배열의 push, slice를 직접 사용할 수는 없지만 call을 통해 수행이 가능하다.
3) 이 조건에 의해 let arr = Array.from(객체)의 코드를 통해 배열로 변경이 가능하다.
수업을 들으면서 반복학습의 필요성과 추가 학습의 필요성을 느꼈다. 더 나아가 실제로 코드를 작성해 보고 실행할 수 있는 기회가 있다면 이해가 수월하게 될 수 있다는 아쉬움도 느꼈다. 내일은 오늘보다 더 열심히 수업에 임해야지..
'[항해99] TIL' 카테고리의 다른 글
[항해99] 4일차(ES6, 일급 객체로서 함수, 실행 컨텍스트, 콜백 함수) (0) | 2023.08.18 |
---|---|
[항해99] 3일차(DOM, Callback, Class) (0) | 2023.08.16 |
[항해99] 1일차(JavaScript 문법) (0) | 2023.08.14 |
1주차 WIL (사전 미니 프로젝트 회고) (0) | 2023.08.11 |
항해99 사전학습 4일차(Elastic Beanstalk) (0) | 2023.08.07 |