do...while
do...while 语句创建了一个循环,只要测试条件评估为真,它就会执行指定的语句。条件在执行语句后进行评估,导致指定的语句至少执行一次。
试一试
let result = "";
let i = 0;
do {
i += 1;
result += i;
} while (i < 5);
console.log(result);
// Expected output: "12345"
语法
js
do
statement
while (condition);
描述
像其他循环语句一样,你可以在 statement 中使用控制流语句
do...while语句的语法要求末尾有一个分号,但如果缺少分号导致语法无效,自动分号插入过程可能会为你插入一个。
示例
使用 do...while
在下面的示例中,do...while循环至少迭代一次,并重复迭代直到i不再小于 5。
js
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);
使用 false 作为 do...while 条件
由于语句总是执行一次,do...while (false)与执行语句本身相同。这是 C 语言中的一种常见惯用法,它允许你使用break来提早跳出分支逻辑。
js
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的标签块语句
js
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);
}
}
或者使用函数
js
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);
}
}
使用赋值作为条件
在某些情况下,使用赋值作为条件可能是有意义的,例如这样
js
do {
// …
} while ((match = regexp.exec(str)));
规范
| 规范 |
|---|
| ECMAScript® 2026 语言规范 # sec-do-while-statement |
浏览器兼容性
加载中…