강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của dlthdnjs21212678
dlthdnjs21212678

câu hỏi đã được viết

Bài giảng cơ bản về JavaScript cho người mới bắt đầu

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

Viết

·

245

·

Đã chỉnh sửa

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의 조건문이 충족되지 못해서 무한 루프가 만들어지는 경우가 맞을까요?

 

 

javascript

Câu trả lời 1

0

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

Hình ảnh hồ sơ của dlthdnjs21212678
dlthdnjs21212678

câu hỏi đã được viết

Đặt câu hỏi