inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

JS new Date()질문

해결된 질문

144

AA

작성한 질문수 2

0

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

인프런 AI 인턴

안녕하세요 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