You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Prettier为何在while条件中添加额外括号?

Prettier给do-while循环条件添加额外括号的原因

这不是Bug,Prettier这么做是出于以下几个明确的风格与可读性考虑:

  • 消除歧义,强化意图:a /= b是赋值操作,虽然JavaScript允许它直接作为do-while的循环条件(赋值表达式会返回赋值后的值,以此作为判断依据),但这种写法很容易被误读为相等判断(a == b)。额外添加一层括号后,能清晰告诉阅读者:这里是一个带返回值的赋值操作,同时作为循环的判断条件,代码意图更直白。
  • 遵循Prettier内置风格规则:Prettier的核心目标是统一代码风格、减少不必要的争议。对于所有“在条件语句中直接使用赋值表达式”的场景(包括if、while、do-while),它都会强制添加括号。比如if (a = b)也会被格式化为if ((a = b)),这是其预设的规范,而非错误。
  • 提升代码可读性:尤其是对不熟悉JavaScript表达式特性的开发者来说,加括号能降低理解成本,快速识别出这不是常规的条件判断逻辑,而是包含了赋值的操作。

对比原代码与格式化后代码:

原代码:

let [a, b] = [64n, 2n];
do {
    console.log(a);
} while (a /= b);

格式化后代码:

let [a, b] = [64n, 2n];
do {
    console.log(a);
} while ((a /= b));

两段代码逻辑完全一致,输出结果相同,差异仅在于格式规范层面。

内容的提问来源于stack exchange,提问作者Mr. X

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 23:33:11