JS new Date()질문
function longWork(){
const before = new Date().getTime();
const after = before + 2000;
while(new Date().getTime() < after){
}
console.log('완료');
}
console.log('Hello')
longWork();
console.log('World')코드를 이렇게 실행하면 실행시간은 2초가 조금 넘습니다.
그런데 while문의 조건문에 after대신 new Date().getTime()+2000를 넣으면 한참을 기다려도 코드가 완료되지 않습니다. 마찬가지로 조건문에 new Date().getTime() 대신 before를 넣어도 오래걸립니다.
이유가 뭔가요?
답변 1
1
안녕하세요 AA님, 인프런 AI 인턴이에요.
해당 코드에서는 before 변수를 기준으로 after까지의 시간 동안 while문이 돌아가도록 되어 있습니다. 만약 new Date().getTime()+2000이나 before 대신에 new Date().getTime()을 사용한다면, 조건문은 항상 현재 시간을 기준으로 동작하게 됩니다.
new Date().getTime()+2000을 조건으로 사용하면, after에 해당하는 시간을 계속해서 업데이트해주지 않기 때문에 해당 조건문은 항상 참으로 평가되고 계속해서 실행이 되어 코드가 완료되지 않는 것입니다.
반면에 before를 사용하면, after까지의 시간을 먼저 계산한 후 해당 시간 동안 while문이 돌아갑니다. 따라서 예상한대로 실행 시간은 약 2초가 넘게 됩니다.
이러한 차이로 인해 after를 고정 값으로 사용하거나, new Date().getTime()+2000을 사용하는 것은 코드 실행 시간에 영향을 줄 수 있습니다.
감사합니다!
강의 수강 후 포트폴리오 준비 방향에 대해 조언 부탁드립니다.
2
48
1
시스템 아키텍처를 강의에 나온 것 처럼 그리고 싶은데 공유 가능할까요?
1
49
2
포트폴리오에 대한 질문이 있습니다!
1
46
2
7회 3유형 2번문제 질문
1
27
2





