class Queue {
constructor() {
this._arr = [];
}
enqueue(item) {
this._arr.push(item);
}
dequeue() {
return this._arr.shift();
}
}
const queue = new Queue();
queue.enqueue(1);
queue.enqueue(2);
queue.enqueue(3);
queue.dequeue(); // 1
class Stack {
constructor() {
this._arr = [];
}
push(item) {
this._arr.push(item);
}
pop() {
return this._arr.pop();
}
peek() {
return this._arr[this._arr.length - 1];
}
}
const stack = new Stack();
stack.push(1);
stack.push(2);
stack.push(3);
stack.pop(); // 3
command
+ z
)큐와 스택은 자료구조에서 자료가 저장되는 형태를 의미한다. 큐는 FIFO의 방식이고 데이터를 입력하고 추출하는 방식으로 enqueue와 dequeue로 정의한다. 스택은 LIFO의 방식이고 push, pop으로 데이터를 입력, 추출한다.
자바스크립트의 런타임 환경에서 Call Stack에서 함수를 호출할 때 가장 위에 쌓인 함수를 먼저 처리하면서 동기적으로 작동하고(LIFO), 비동기 코드는 Callback Queue에 저장되어 대기하다가 Call Stack이 비워지게 되면 Event Loop를 통해 FIFO방식으로 Call Stack에 저장되고 처리된다.