[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