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;
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;
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 的带标签块语句:
jshandleFriends: {
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);
或者使用函数:
jsfunction handleFriends() {
if (!user.loggedIn) {
console.log("你未登陆");
return;
const friends = user.getFriends();
if (!friends.length) {
console.log("未找到朋友");
return;
for (const friend of friends) {
handleFriend(friend);
使用赋值作为条件
使用赋值作为条件
在某些情况下,使用赋值作为条件是有意义的,例如这样:
js
do {
} while ((match = regexp.exec(str)));