일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 중학수학
- html/css
- 정보처리기사필기
- 쇼핑몰홈페이지제작
- 자바 실습
- JSP/Servlet
- 자바스크립트
- JDBC
- 디버깅
- 자바
- JSP
- 머신러닝
- 스프링프레임워크
- 정보처리기사실기
- 연습문제
- 중학1-1
- 상속
- 데이터베이스
- 자바스크립트심화
- 데이터분석
- 타입스크립트심화
- 개발일기
- 딥러닝
- 파이썬
- 혼공머신
- SQL
- rnn
- 스프링
- ChatGPT
- 컴퓨터비전
- Today
- Total
클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지
자바스크립트 실행 1 - 자바스크립트 변수 정의 과정 본문
2주차 수업이 시작되었다. 심화 과정이 정말 어렵지만 그래도 공부를 계속해보기로 했다. 1시간만 더 공부하고 새벽 공부는 여기서 마치려고 한다.
이론 1 - 자바스크립트 변수 정의 과정
실행하기 위해서는 기계가 코드를 읽을 수 있어야 한다. 컴퓨터가 읽고 실행할 수 있어야 하는데 이것은 CPU 같은 기계 장치가 읽고 실행을 할 수 있다는 뜻이다. CPU에는 instruction 즉 기계가 알아들을 수 있는 몇 종류의 명령이 있다. 자바스크립트 코드가 어떠한 과정을 거쳐 CPU의 insturction으로 변환되는 과정이 필요하다.
이 작업을 자바스트립트 엔진 즉 컴파일러가 해준다. 자바스크립트 코드는 엔진을 통해 파싱되고 실행된다. 파싱은 AST라는 나무 형태의 객체 코드로 변환되는데, 이것을 컴파일러가 읽어 기계 코드로 변환한다. 크롬 브라우저는 V8 엔진은 구글에서 만든 자바스크립트 엔진을 사용한다.
코드는 같지만 다르게 동작할 수 있다. node.js는 v8 엔진과 libuv라는 모듈 사이에 통신을 하면서 비동기를 처리한다.
Varialbe Object에 이와 같은 변수를 선언하고 Variable Object에 값을 할당한다. 값을 할당하는 것과 변수에 들어가는 시점이 다르다.
엔진이 코드를 읽으면 코드를 컴파일해서 변수 목록에 넣는다. 그리고 this와 scope chain도 할당한다.
글로벌 컨텍스트 안에서 레시컬 변수가 만들어진다고 예시로 들면, 실행 컨텍스트에서 가리키는 this 변수가 있다. a, b, c라는 변수가 myFunc()에 있을 때 d라는 변수는 여기서 선언된 변수가 아니다. 실행 컨텍스트 렉시컬 안에 d라는 변수가 없을 때 외부 스코프에서 d의 변수를 찾으려고 한다.
d가 바깥에 정의되어 있을 때, d를 찾기 위해서 스코프 체인을 따라간다. 스코프 체인에 대한 변수가 이 렉시컬 변수 안에 있다.
생성 단계에서 함수는 값까지 저장되어 함수 객체 전체가 저장된다. 하지만 변수는 값이 저장되지 않는다. 변수는 variable object에 값이 저장되지 않지만 공간은 생긴다. let, const, var에 따라 저장되는 값이 다르다.
선언할 때 비로소 a에 10이라는 값이 들어간다. 할당하기 전에는 초기화되지 않은 값이 들어간다. let이나 const는 uninitialize로, var는 undefined라는 값으로 초기화된다. undefined는 자바스크립트에 존재하는 값이다.
퀴즈 1 - 자바스크립트 변수 정의 과정
학습을 마치고
이번 단원도 정말 어려웠다. 무슨 말인지 절반도 알아듣지 못했다. 난 어떤 수업이든지 1.5배속으로 듣는데 속도가 빠른지도 모르겠다. 그래도 일반 속도로 들으면 답답한 편이다.
어쨌든 이렇게 어려운 과목을 계속 학습할 수 있을지 의문이 든다. 이런 게 있다 하고 넘어가며 적당히 공부할지 아니면 어느 정도 가닥을 잘 잡아야 할지 의문이다.
이런 식으로 공부하는 건 시간만 때우고 효율적이지 못한 것 같다. 공부할 게 너무 많다 보니 마음은 급하고 제대로 하지는 못하는 것 같다.
'웹 · 앱 개발 > 자바스크립트' 카테고리의 다른 글
자바스크립트 실행 3 - 자바스크립트 내장 객체 1 (0) | 2024.11.27 |
---|---|
자바스크립트 실행 2 - 자바스크립트 Hoisting (0) | 2024.11.26 |
실행 컨텍스트 9 - ES6 Rest, Spread Operator 3 : 실습 문제 풀기 2 (0) | 2024.11.25 |
실행 컨텍스트 8 - ES6 Rest, Spread Operator 2 : 실습 문제 풀기 1 (0) | 2024.11.25 |
실행 컨텍스트 7 - ES6 Rest, Spread Operator 1 : 이론 및 퀴즈 문제 풀기 (0) | 2024.11.25 |