
무한 루프는 종료 조건 없이 계속 반복되는 루프를 의미한다. 특정 상황에서 무한 루프를 의도적으로 사용해야 할 때가 있다. 예를 들어, 서버의 지속적인 요청 처리나 대기 상태를 구현할 때 사용된다. 아래는 JavaScript에서 무한 루프를 만드는 여러 가지 방법과 그 설명이다.
while 문은 주어진 조건이 참인 동안 계속해서 코드를 실행한다. 조건을 true로 설정하면 무한히 반복된다.
while (true) {
// 무한히 실행될 코드
console.log("This is an infinite loop");
}
for 문에서도 조건을 적절히 설정하면 무한 루프를 만들 수 있다. for 문은 세 가지 부분으로 구성되는데, 초기화 부분, 조건 부분, 그리고 반복 실행 부분이다. 여기서 조건 부분을 비워두거나 항상 참이 되도록 설정하면 무한 루프가 된다. 특히 조건 부분을 비워둘 경우 JavaScript는 이를 항상 참으로 간주하므로 무한히 반복된다.
for (;;) {
// 무한히 실행될 코드
console.log("This is an infinite loop");
}
위의 코드는 초기화와 반복 실행 부분도 생략되어 있는데, 이렇게 하면 조건이 항상 참으로 평가되어 무한 루프가 된다.
do...while 문은 블록 내부의 코드를 최소한 한 번 실행한 후, 주어진 조건이 참인 동안 계속해서 반복한다.
do {
// 무한히 실행될 코드
console.log("This is an infinite loop");
} while (true);
재귀 함수를 사용하여 무한 루프를 만들 수도 있다. 함수가 자기 자신을 계속 호출하면 된다.
function infiniteLoop() {
console.log("This is an infinite loop");
infiniteLoop();
}
infiniteLoop();
setInterval을 사용하여 일정 시간 간격으로 코드를 무한히 실행할 수도 있다.
setInterval(() => {
console.log("This is an infinite loop");
}, 1000); // 1000 밀리초(1초)마다 실행
무한 루프는 시스템 자원을 소모하고, 브라우저나 서버의 성능을 저하시키거나 응답하지 않게 만들 수 있으므로 매우 주의해서 사용해야 한다. 필요할 때는 반드시 탈출 조건을 설정하거나 clearInterval과 같은 방법을 사용하여 루프를 중지하도록 한다.
let intervalId = setInterval(() => {
console.log("This is an infinite loop");
}, 1000);
setTimeout(() => {
clearInterval(intervalId);
console.log("Infinite loop stopped");
}, 10000); // 10초 후에 무한 루프 중지
결론적으로, 무한 루프는 특정 상황에서 유용할 수 있으나, 사용 시 주의하여야 하며, 적절한 종료 조건이나 중지 방법을 반드시 고려해야 한다.