为什么更漂亮会在这里多加一对括号?

Why does prettier add an extra pair of parentheses here?

提问人:Mr. X 提问时间:10/26/2023 更新时间:10/26/2023 访问量:38

问:

我正在尝试格式化像这样的代码块:

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

我发现更漂亮在条件周围添加了一对额外的括号:while

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

我不明白它为什么这样做。似乎是一个错误,因为两段代码都给出相同的输出。有什么理由更喜欢第二种格式吗?

JavaScript 格式 boolean do-while prettier

评论


答:

2赞 VLAZ 10/26/2023 #1

代码 和 将始终是等效的。但是,Prettier 似乎故意添加了一个额外的换行括号,因为该条件是一个赋值。while(<expression>)while((<expression>))

记录在此 GitHub 问题中。以下是莱德尔在2018年12月所说的话

你好!这实际上是有意为之的,因为将赋值包装在条件中用额外的括号来表明您实际上打算使用赋值 () 而不是比较 ()(这是一个容易犯的错误)。例如,no-cond-assign ESLint 规则有一个选项适用于这种情况。====except-parens