此页面由社区从英文翻译而来。了解更多并加入 MDN Web Docs 社区。
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 语句创建了一个循环,只要测试条件为 true,该循环就会执行指定语句。执行语句后会对条件进行评估,从而使指定语句至少执行一次。
In this article
尝试一下
let result = "";let i = 0;do { i = i + 1; result = result + i;} while (i < 5);console.log(result);// Expected output: "12345"语法
js
do statementwhile (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);// 尽管 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); }}使用赋值作为条件
在某些情况下,使用赋值作为条件是有意义的,例如这样:
js
do { // …} while ((match = regexp.exec(str)));规范
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-do-while-statement> |