set Timeout에 관한 면접 문제
1166 단어 면접편
setTimeout 한 번만 실행하면 js 코드를 비동기적으로 실행할 수 있습니다 setInterval 순환 실행
console.log((function(){
console.log(1);
setTimeout(function(){
console.log(2)
},1000)
setTimeout(function(){
console.log(3)
},0);
setTimeout(function(){
console.log(4)
},0);
console.log(5)
})())
정답이 뭘까요?답은 다음과 같습니다.
1 5 undefined 3 4 2
다음은 이 문제를 설명합니다.
먼저 비축해야 할 지식점은 다음과 같다. 1. set Timeout의 시간은'ms'단위이고 0ms라도 시간이 있다. 왜냐하면 set Timeout의 시간은 시간 오차가 있기 때문이다.2. 함수가return 반환값이 없으면 undefined가 나타납니다. 왜 undefined가 나타나는지 묻지 마세요. 저도 몰라요!
이것만으로도 일부 답이 나올 수 있다.
그런데 왜'undefined'가 있어요?
맨 바깥쪽 콘솔 때문에.log () 안에 포함된 것은 즉시 실행 함수 IIFE (Immediately Invoked Function Expression) 입니다. 리턴 반환 값이 없으면 undefined가 틀림없습니다!
근데 왜'15'뒤에 있지?
"return xxxx"는 일반적으로 함수의 마지막에 쓰여 있기 때문에, 그렇지 않으면, 콘솔은 모두 실행하지 않잖아!하지만 마지막에 써도 set Time out이 있으면 set Time out 전에 실행해야 하는데 다행히 return을 쓰지 않았어요. 그렇지 않으면 set Time out 몇 개가 실행되지 않을 거예요!
마지막 답은 틀림없이 내가 쓸데없는 말을 하지 않겠지!
마지막 성명: 만약 잘못이 있다면 비판과 지적을 환영합니다!다시 한 번 감사합니다~~