[JavaScript] JavaScript의 기본 원리
글 작성자: 택시 운전사
반응형

Frontend Master의 'JavaScript: The Hard Parts'를 보고 정리한 글의 일부입니다.
Principles of JavaScript
Global Execution Context ( 전역 실행 환경 )
const num = 3;
function multiplyBy2 (inputNumber) {
const result = inputNumber*2;
return result;
}
const name = "Will"
해당 코드를 실행하면 어떤 일이 일어나는가?
num이라는 변수 3을 저장한다.multiplyBy2라는 함수를 생성한다. ( 함수 안으로는 절대 들어가지 않는다 호출하지 않는 이상 )name이라는 변수에"Will"을 저장한다.
JavaScript의 Thread
- Single thread - 한 번에 한 가지 일만 가능하다.
- Synchronous execution - 동기적 실행을 한다.
Local Execution Context
Running / Calling / Invoking a function
const num = 3;
function multiplyBy2 (inputNumber) {
const result = inputNumber*2;
return result;
}
const output = multiplyBy2(4);
const mewOutput = multiplyBy2(10);
JavaScript에서 함수를 실행할 때에는 parenthesis(괄호)를 사용하면 된다.
// 함수의 실행
const output = mulitplyBy2(4);
Local execution context가 생성된다.
Local execution context
Local Memory와Local Thread로 이루어진다.- Processs
parameter로 받은 값을inputNumber라는 변수에 저장한다.result라는 변수에inputNumber*2를 저장한다.result의 값을 반환한다.- 절차가 끝나면
Local execution context는 사라진다.
cf) output의 값은 multiplyBy2(4)의 반환값으로 할당되기 전까지 undefined이다.
Call Stack
현재 진행해야하는 Global execution context와 Local execution context의 절차 및 과정을 알 수 있게 하는 자료구조이다.
Stack이라는 이름 그대로 우리가 흔히 아는 Stack 자료구조의 특징인 LIFO(Last In First Out)의 특징을 띄게 된다.
Call Stack은 JavaScript 엔진에서 돌아가는 Runtime의 일부이다.
위의 코드의 Call Stack의 변화는 다음과 같다.
global execution context가push된다.multiplyBy2(4)라는local execution context가push된다.- 해당
local execution context가 끝나고Call Stack에서pop한다. multiplyBy2(10)라는local execution context가push된다.- 해당
local execution context가 끝나고Call Stack에서pop한다. - 마지막으로,
global execution context를 끝내고Call Stack을 비우면서 절차를 마무리한다.
반응형
'Web > JavaScript' 카테고리의 다른 글
| 🕵️♂️ 자동완성 모듈의 법칙 (0) | 2019.08.22 |
|---|---|
| [JavaScript] JavaScript와 Functional Programming 그리고 Closure (0) | 2019.08.10 |
| [JavaScript] Synchronous, Asynchronous, Blocking, Non-blocking (0) | 2019.06.02 |
| [JavaScript] Arrow Functions (0) | 2019.06.01 |
| [JavaScript] var, const, let JavaScript 변수 키워드 (0) | 2019.05.30 |
댓글
이 글 공유하기
다른 글
-
🕵️♂️ 자동완성 모듈의 법칙
🕵️♂️ 자동완성 모듈의 법칙
2019.08.22 -
[JavaScript] JavaScript와 Functional Programming 그리고 Closure
[JavaScript] JavaScript와 Functional Programming 그리고 Closure
2019.08.10 -
[JavaScript] Synchronous, Asynchronous, Blocking, Non-blocking
[JavaScript] Synchronous, Asynchronous, Blocking, Non-blocking
2019.06.02 -
[JavaScript] Arrow Functions
[JavaScript] Arrow Functions
2019.06.01