do...while
do...while
do...while 문은 테스트 조건이 true로 평가되는 동안 지정된 문을 실행하는 루프를 만듭니다. 조건은 문을 실행한 후에 평가되므로, 지정된 문이 최소한 한 번은 실행됩니다.
출처: do...while
본문
do...while 문은 테스트 조건이 true로 평가되는 동안 지정된 문을 실행하는 루프를 만듭니다. 조건은 문을 실행한 후에 평가되므로, 지정된 문이 최소한 한 번은 실행됩니다.
구문 (Syntax)
do
statement
while (condition);
statement: 최소한 한 번은 실행되고, 조건이true로 평가되는 동안 다시 실행되는 문입니다. 여러 문을 실행하려면 블록 문을 사용하세요.condition: 루프를 통과할 때마다 평가되는 표현식입니다. 이 조건이true로 평가되면statement가 다시 실행되고,false로 평가되면 실행은do...while루프 다음의 문으로 계속됩니다.
설명 (Description)
다른 루핑 문과 마찬가지로, statement 내부에서 제어 흐름 문을 사용할 수 있습니다.
break는 문 실행을 중단하고 루프 다음의 첫 번째 문으로 갑니다.continue는 문 실행을 중단하고condition을 재평가합니다.
do...while 문 구문은 끝에 세미콜론이 필요하지만, 세미콜론이 없어 결과적으로 유효하지 않은 구문이 되면 자동 세미콜론 삽입 과정이 세미콜론을 삽입할 수 있습니다.
예제: do...while 사용하기
다음 예제에서 do...while 루프는 최소한 한 번 반복하고 i가 더 이상 5보다 작지 않을 때까지 다시 반복합니다.
let result = "";
let i = 0;
do {
i += 1;
result += `${i} `;
} while (i > 0 && i < 5);
// Despite i === 0 this will still loop as it starts off without the test
console.log(result);
예제: do...while 조건으로 false 사용하기
문이 항상 한 번 실행되므로, do...while (false)는 문 자체를 실행하는 것과 같습니다. 이것은 C 계열 언어에서 흔한 관용구로, break를 사용해 분기 로직에서 일찍 빠져나올 수 있게 합니다.
do {
if (!user.loggedIn) {
console.log("You are not logged in");
break;
}
const friends = user.getFriends();
if (!friends.length) {
console.log("No friends found");
break;
}
for (const friend of friends) {
handleFriend(friend);
}
} while (false);
// The rest of code
JavaScript에는 레이블이 지정된 블록 문을 break와 함께 사용하는 것 같은 몇 가지 대안이 있습니다.
handleFriends: {
if (!user.loggedIn) {
console.log("You are not logged in");
break handleFriends;
}
const friends = user.getFriends();
if (!friends.length) {
console.log("No friends found");
break handleFriends;
}
for (const friend of friends) {
handleFriend(friend);
}
}
또는 함수를 사용할 수도 있습니다.
function handleFriends() {
if (!user.loggedIn) {
console.log("You are not logged in");
return;
}
const friends = user.getFriends();
if (!friends.length) {
console.log("No friends found");
return;
}
for (const friend of friends) {
handleFriend(friend);
}
}
예제: 조건으로 할당(assignment) 사용하기
어떤 경우에는 다음과 같이 조건으로 할당을 사용하는 것이 합리적일 수 있습니다.
do {
// …
} while ((match = regexp.exec(str)));
그러나 그렇게 하면 가독성 tradeoff가 있습니다. while 문서에 조건으로 할당 사용 섹션이 권장사항과 함께 있습니다.