setTimeout 및 console.log 간 실행 선후 순서
3235 단어 전단 단순 면접 문제
setTimeout 및 console.log 간 실행 선후 순서
setTimeout 지연 시간은 0시입니다.
o2o:
setTimeout(function(){
console.log(2);
},0);
console.log(1);
// :1,2
n2n:
setTimeout(function(){
console.log(4);
},0);
setTimeout(function(){
console.log(5);
},0);
console.log(1);
console.log(2);
console.log(3);
// :1,2,3,4,5
……
원인: 페이지에서 setTimeout에 의해 정의된 모든 작업이 같은 대기열에 놓여 순서대로 실행됩니다.이 대기열의 실행 시간은 함수 호출 창고가 실행될 때까지 기다려야 실행할 수 있습니다. 즉, 모든 실행 가능한 코드가 실행될 때까지 기다려야 set Timeout이 내부 작업을 수행하고 시간 지연 시간에 따라 긴 순서로 코드를 실행할 수 있습니다!
예제:
setTimeout(function(){
console.log(a);
},0);
var a = 1;
console.log(b);
var b = 2;
var c = 3;
var d = 4;
var e = 5;
function fx(c){
console.log(c);
}
function fn(e,d){
console.log(d);
setTimeout(function(){
console.log(e);
},10);
}
setTimeout(function(){
console.log(b);
},20);
fn(e,d);
fx(c);
출력 순서:
undefined
4
3
1
5
2
원인:
1、console.log() setTimeout , b undefined;
2、 , fn fx , fn console.log , d 4;
3、 , fx console.log , c 3;
4、 setTimeout , 1,5,2。