// 1번
let num = 1;
// 2번
setTimeout(() => {
num = 2;
}, 0);
// 3번
num = 3;
// 4번
console.log(num);
위 코드 실행시 콘솔에 출력될 값과 그 이유는?
출력될 값
3
이유
실행 순서는 다음과 같다.
- 처음 num변수에 1이 담김.
- setTimeout함수가 0초이지만, 일단 순서를 뒤로 미루고 함수밖의 로직을 먼저 처리한다.
- (콜스택에 setTimeout 바깥 로직이 먼저 들어가서, 0초후 실행되었어야하는 콜백함수의 순서가 뒤로 밀린다.)
- 이후 num에 3이 담김.
- console에 3이 찍힘.
- num이 2로 바뀜.
'JavaScript' 카테고리의 다른 글
웹페이지 렌더링 방식(CSR, SSR, SSG) (0) | 2023.10.29 |
---|---|
JavaScript - ajax (1) | 2023.10.15 |
JavaScript - async/await (1) | 2023.10.13 |
JavaScript - 비동기 실행과 promise객체 (0) | 2023.10.13 |
JavaScript - API(response data, REST API, contnet-type 등) (0) | 2023.10.13 |