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 July 2015.
do...while
语句创建了一个循环,只要测试条件为 true,该循环就会执行指定语句。执行语句后会对条件进行评估,从而使指定语句至少执行一次。
尝试一下
let result = "";
let i = 0;
do {
i = i + 1;
result = result + i;
} while (i < 5);
console.log(result);
// Expected output: "12345"
语法
描述
示例
使用 do...while
下面的例子中,do...while
循环至少迭代一次,并且继续迭代直到 i
不再小于 5 时结束。
js
let result = "";
let i = 0;
do {
i += 1;
result += `${i} `;
} while (i > 0 && i < 5);
// 尽管 i === 0,但仍会进入循环,因为开始时没有进行测试
console.log(result);
使用 false 作为 do...while 条件
由于语句总是被执行一次,do...while (false)
等同于执行语句本身。这是类 C 语言中常见的习语,它允许你使用 break
来提前跳出分支逻辑。
js
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);
// 剩余代码
在 JavaScript 中,有一些替代方法,例如使用带有 break
的带标签块语句:
js
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);
}
}
或者使用函数:
js
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);
}
}
使用赋值作为条件
规范
Specification |
---|
ECMAScript® 2025 Language Specification # sec-do-while-statement |
浏览器兼容性
Report problems with this compatibility data on GitHubdesktop | mobile | server | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
do...while |
Legend
Tip: you can click/tap on a cell for more information.
- Full support
- Full support
The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.