• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

로또 번호 추첨기 과제 만들기 중

23.11.20 17:35 작성 23.11.20 17:42 수정 조회수 132

0

// 요소 선택 및 상수 선언 
let lottoEl = document.querySelector('.lotto');
let numbersDiv = lottoEl.querySelector('.numbers');
let drawButton = lottoEl.querySelector('#draw');// 추첨
let resetButton = lottoEl.querySelector('#reset');// 다시

let lottoNumbers = []; // 6개의 추첨 번호가 들어갈 배열
let colors = ['#d44052','#F5A623','#F5E123','#7ED321','#4A90E2','#4A53E2'];

let paintNumber = (num) => {
    let eachNumDiv = document.createElement('div');
    let colorIndex = Math.floor(num/10);
    eachNumDiv.classList.add('eachnum');
    eachNumDiv.style.backgroundColor = colors[colorIndex];
    numbersDiv.appendChild(eachNumDiv);
}

function drawNum(){
    // ran 변수가 여기 위치에 위치하면 자꾸 무한루프에 빠짐 ;ㅁ; 
//무한루프 발생 주의 
    let ran = Math.floor(Math.random()*44)+1;
    
    while(lottoNumbers.length < 6) { 
        //let ran = Math.floor(Math.random()*44)+1;
        if(lottoNumbers.indexOf(ran) === -1){
            lottoNumbers.push(ran);
            paintNumber(ran);
        }
    }
}
function clearNum(){
    lottoNumbers.splice(0,6);
    numbersDiv.innerHTML = '';
}

drawButton.addEventListener('click', drawNum);
resetButton.addEventListener('click', clearNum);

예제코드 무한루프 코드 입니다. 실행 시 무한 루프 발생합니다.

 

과제 하던 중 무한루프를 만났습니다.

이 경우 변수가 밖에 있으면서 while의 조건문이 충족되지 못해서 무한 루프가 만들어지는 경우가 맞을까요?

 

 

답변 1

답변을 작성해보세요.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2023.11.22

안녕하세요, 푸푸님. 무한 루프가 발생하는 원인은 ran 변수의 선언 위치입니다. 현재 코드에서 ran 변수가 while 문 안에 위치하지 않고 밖에 위치하고 있기 때문에 무한 루프가 발생합니다. ran 변수를 while 문 안에 위치시키면 원하는 동작을 수행할 수 있습니다. 즉, drawNum 함수에서 ran 변수를 let ran = Math.floor(Math.random()*44)+1; 코드를 while 문 안에 옮기시면 됩니다. 그렇게 수정하면 무한 루프 문제가 해결될 것입니다. 감사합니다.