do...while
Baseline
Widely available
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since 2015å¹´7æ.
do...while æã¯ãæå®ãããæãããã¹ãæ¡ä»¶ãå½ã«è©ä¾¡ãããã¾ã§å®è¡ããã«ã¼ãã使ãã¾ããæ¡ä»¶ã¯æãå®è¡ããå¾ã«è©ä¾¡ããã¾ããçµæã¨ãã¦ãæå®ãããæã¯å°ãªãã¨ã 1 åã¯å®è¡ããã¾ãã
試ãã¦ã¿ã¾ããã
let result = "";
let i = 0;
do {
i += 1;
result += i;
} while (i < 5);
console.log(result);
// äºæ³ãããçµæ: "12345"
æ§æ
do
statement
while (condition);
statement-
å°ãªãã¨ã 1 åã¯å®è¡ãããæ¡ä»¶ãçã¨è©ä¾¡ããããã³ã«åå®è¡ãããæããããã¯æã使ç¨ãã¦è¤æ°ã®æãå®è¡ãããã¨ãã§ãã¾ãã
condition-
ã«ã¼ããééããå¾ã«æ¯åè©ä¾¡ãããå¼ããããã®æ¡ä»¶ãçã«è©ä¾¡ãããå ´åã¯ã
statementã¯å度å®è¡ããã¾ããæ¡ä»¶ãå½ã«è©ä¾¡ãããå ´åã¯ãå¶å¾¡ãdo...whileã«ç¶ãæã¸æ¸¡ãã¾ãã
解説
ä»ã®ã«ã¼ãæã¨åæ§ã«ãstatement ã®ä¸ã§ããã¼å¶å¾¡æã使ç¨ãããã¨ãã§ãã¾ãã
breakã«ãããstatementã®å®è¡ã忢ããã«ã¼ãã®å¾ã®æåã®æã¸ç§»åãã¾ããcontinueã«ãããstatementã®å®è¡ã忢ããconditionãåè©ä¾¡ãã¾ãã
do...while æã®æ§æã§ã¯æ«å°¾ã«ã»ãã³ãã³ãè¦æ±ããã¾ãããã»ãã³ãã³ããªããã¨ã§æ§æã䏿£ãªç¶æ
ã«ãªãå ´åãèªåã»ãã³ãã³æ¿å
¥å¦çã«ãã£ã¦èªåçã«æ¿å
¥ããããã¨ãããã¾ãã
ä¾
>do...while ã®ä½¿ç¨
次ã®ä¾ã§ã¯ã do...while ã«ã¼ããå°ãªãã¨ã 1 åã¯å®è¡ãã i ã 5 ããå°ããã¨ããæ¡ä»¶ãæºãããªããªãã¾ã§å復ãã¾ãã
let result = "";
let i = 0;
do {
i += 1;
result += `${i} `;
} while (i > 0 && i < 5);
// i === 0 ã§ãã£ã¦ãããã®ã«ã¼ãã¯æ¤æ»ãªãã§å§ã¾ããããã«ã¼ããå®è¡ããã
console.log(result);
do...while ã®æ¡ä»¶ã¨ã㦠false ã使ç¨
ãã®æã¯å¸¸ã«ä¸åº¦ã ãå®è¡ããããããdo...while (false) ã¯æèªä½ãå®è¡ããã®ã¨åãã§ãããã㯠C ç³»è¨èªã§ãã使ãããææ³ã§ãããbreak ã使ç¨ãã¦åå²ãã¸ãã¯ãæ©æã«æãåºããã¨ãã§ããããã«ãªãã¾ãã
do {
if (!user.loggedIn) {
console.log("ãã°ã¤ã³ãã¦ãã¾ãã");
break;
}
const friends = user.getFriends();
if (!friends.length) {
console.log("åéãè¦ã¤ããã¾ãã");
break;
}
for (const friend of friends) {
handleFriend(friend);
}
} while (false);
// The rest of code
JavaScript ã§ã¯ãbreak ãã¤ãã¦ã©ãã«ä»ããããã¯æã使ç¨ãããªã©ãããã¤ãã®ä»£æ¿ææ®µãããã¾ãã
handleFriends: {
if (!user.loggedIn) {
console.log("ãã°ã¤ã³ãã¦ãã¾ãã");
break handleFriends;
}
const friends = user.getFriends();
if (!friends.length) {
console.log("åéãè¦ã¤ããã¾ãã");
break handleFriends;
}
for (const friend of friends) {
handleFriend(friend);
}
}
ã¾ãã¯é¢æ°ã使ç¨ããæ¹æ³ãããã¾ãã
function handleFriends() {
if (!user.loggedIn) {
console.log("ãã°ã¤ã³ãã¦ãã¾ãã");
return;
}
const friends = user.getFriends();
if (!friends.length) {
console.log("åéãè¦ã¤ããã¾ãã");
return;
}
for (const friend of friends) {
handleFriend(friend);
}
}
æ¡ä»¶ã¨ãã¦ä»£å ¥æã使ç¨
å ´åã«ãã£ã¦ã¯ã次ã®ããã«ãä»£å ¥ãæ¡ä»¶ã¨ãã¦ä½¿ç¨ãããã¨ãçã«ããªããã¨ãããã¾ãã
do {
// â¦
} while ((match = regexp.exec(str)));
å ´åã«ãã£ã¦ã¯ãæ¡ä»¶ã¨ãã¦ä»£å
¥ã使ç¨ãããã¨ã¯æå³ãããã¾ãããããããã®å ´åãæ£ããæ¹æ³ã¨ééã£ãæ¹æ³ãããã¾ããwhile ã®ããã¥ã¡ã³ãã§ã¯ã代å
¥ãæ¡ä»¶ã¨ãã¦ä½¿ç¨ã®ç¯ã§ãç¥ã£ã¦ããã¹ããããã¦å¾ãã¹ãä¸è¬çãªè¯ãå®è·µä¾ã示ãã¦ãã¾ãã
仿§æ¸
| Specification |
|---|
| ECMAScript® 2027 Language Specification> # sec-do-while-statement> |