1. JS의 특징


JavaScript는 싱글 스레드(하나의 프로그램은 동시에 하나의 코드만 실행할 수 있다.) 런타임을 가지는데 이것은 결국 한번에 하나의 싱글 콜 스택만을 가지고 있다는 의미이다.

2. Stack


function multiply(a, b) {
  return a * b;
}

function square(n) {
  return multiply(n * n);
}

function printSquare(n) {
  var squared = square(n);
  console.log(squared);
}

printSquare(4);

스크린샷 2022-09-13 오후 8.59.12.png

스크린샷 2022-09-13 오후 9.02.41.png

스크린샷 2022-09-13 오후 9.02.49.png

스크린샷 2022-09-13 오후 9.04.01.png

스크린샷 2022-09-13 오후 9.04.17.png

3. Blocking


blocking이라는 것에 대한 정확한 정의는 존재하지 않는다. 그저 느리게 동작하는 코드이다.

e.g.

console.log는 느리지 않지만 while 루프 안에서 수십억번 실행된다면 느리다.

e.g.

// 동기적으로 실행된다면
let foo = $.getSync('//foo.com'); // 기다리고..
let bar = $.getSync('//bar.com'); // 기다리고..
let qux = $.getSync('//qux.com'); // 기다린다..

console.log(foo);
console.log(bar);
console.log(qux);