🤍 전 강의 25% 할인 중 🤍

2024년 상반기를 돌아보고 하반기에도 함께 성장해요!
인프런이 준비한 25% 할인 받으러 가기 >>

  • 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

8장 startTime=new Date()의 라인 위치에 따라 값이 달라집니다

22.10.13 18:13 작성 조회수 178

0

강의를 듣다가 이해되지 않는 부분이 생겨 질문드립니다.

$screen.addEventListener('click', (event) => {
            if (event.target.classList.contains('waiting')) {
                event.target.classList.replace('waiting','ready');
                event.target.textContent='초록색이 나오면 클릭하세요';
                setTimeout(function(){
                    event.target.classList.replace('ready','now');
                    evnet.target.textContent='클릭하세요!';
                    startTime=new Date(); //startTime===undefined
                },Math.floor(Math.random()*1000)+2000);
            } else if (event.target.classList.contains('ready')) {
                alert('너무 빨리 클릭했습니다.');
                event.target.classList.replace('ready','waiting');
                event.target.textContent='클릭해서 시작하세요';
            } else if (event.target.classList.contains('now')) {
                //끝 시간 재기
                endTime=new Date();
                $result.textContent=`${startTime} ms`;
                event.target.classList.replace('now','waiting');
                event.target.textContent='클릭해서 시작하세요';
            }
        });

제가 작성한 반응속도 게임 만들기의 addEventListener부분입니다. 해당 코드의 변수 startTime에 Date가 할당되는 시기가 이벤트타겟의 값이 now로 변경되는 시기보다 뒤에 오게되면 undefined가 할당됩니다. 아래의 코드는 startTime의 값이 undefined가 아닌 제대로 된 날짜가 저장되도록 수정한 코드입니다.

위 코드의 startTime 이 undefined가 되는 이유를 알려주세요.

setTimeout(function(){
                    startTime=new Date(); //startTime===`Thu Oct 13 2022 18:13:10 GMT+0900 (한국 표준시)`
                    event.target.classList.replace('ready','now');
                    evnet.target.textContent='클릭하세요!'; 
                },Math.floor(Math.random()*1000)+2000);

답변 1

답변을 작성해보세요.

1

evnet 오타때문에 그렇습니다.

채널톡 아이콘