언어/javascript
javascript : 자바스크립트의 실행 순서
하이후에호
2020. 11. 29. 20:38
반응형
console.log('A');
setTimeout(function(){
console.log('B');
},0);
console.log('C');
A
C
B
자바스크립트의 함수 중에는 웹 브라우저에 처리를 부탁하는 함수가 있습니다. 대표적으로 타이머 함수와 웹 요청 관련 함수가 있으며, 웹 브라우저가 처리하고 처리가 완료되었다는 것을 자바스크립트에 알려줍니다.
이러한 함수는 현재 실행 중인 다른 코드의 실행이 끝나기 전에 실행되지 않습니다. 마치 회사에서 일하는 동안에 집에 배송된 택배를 확인할 수 없는 것과 같습니다. 일을 마치고 집에 와야 택배를 확인할 수 있겠죠?
setTimeout(function(){
console.log('Set TimeOut');
})
while(true){}
다음과 같은 코드는 웹 브랄우저에 "0초 후에 집에 택배 좀 보내줘!"라고 말은 했지만 회사 일이 끝나지 않으므로 집에 와서 택배를 확인할 수 없는 것입니다.
for (var i = 0; i < 3; i++) {
setTimeout(function () {
console.log(i);
}, 0
);
}
3
3
3
따라서 변수를 호출하고 싶으면 클로저를 활용해야한다.
for (var i = 0; i < 3; i++) {
(function (closed_i){
setTimeout(() => {
console.log(closed_i);
}, 0);
})(i);
}
0
1
2
for (var i = 0; i < 3; i++) {
var f = (function (closed_i){
setTimeout(() => {
console.log(closed_i);
}, 0);
});
f(i);
}
0
1
2
반응형