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,该循环就会执行指定语句。执行语句后会对条件进行评估,从而使指定语句至少执行一次。
尝试一下
语法
描述
示例
使用 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 Language Specification # sec-do-while-statement |
浏览器兼容性
BCD tables only load in the browser