VS Code Prettier插件自动移除括号问题求助
解决Prettier自动移除运算表达式括号的问题
首先明确两个核心点:
- Prettier不存在
removeParens这个官方配置项,你配置文件里的该设置无效,不会对格式化逻辑产生影响。 - Prettier移除括号的规则是:仅保留会改变运算优先级、影响最终结果的括号,对不改变运算顺序的“冗余括号”会自动清理。
为什么第一个函数的括号能保留?
看你的modulo函数:
const modulo = (a, b) => { return ((a * 10) % (b * 10)) / 10; };
这里的括号(a * 10)和(b * 10)明确划分了取模运算的两个操作数边界,虽然*和%优先级相同,但这类括号能让表达式逻辑更清晰,Prettier会判定其不属于冗余括号,因此予以保留。
其他函数括号被移除的原因
以剩余几个函数为例:
- 除法、乘法属于左结合运算,加括号不会改变运算顺序和结果,比如
(a * 10)/(b * 10)/10和a * 10 / b * 10 / 10的运算逻辑完全一致,括号属于冗余内容。 - 加法、减法中,
*的优先级远高于+/-,(a * 10 - b * 10)和a * 10 - b * 10的运算顺序没有区别,括号没有实际作用,会被Prettier判定为冗余并移除。
强制保留括号的解决方案
如果确实需要为了可读性保留这些冗余括号,可以在目标行前添加// prettier-ignore注释,让Prettier跳过对该行的格式化:
const divide = (a, b) => { // prettier-ignore return (a * 10) / (b * 10) / 10; }; const multiply = (a, b) => { // prettier-ignore return (a * 10 * (b * 10)) / 100; }; const subtraction = (a, b) => { // prettier-ignore return (a * 10 - b * 10) / 10; }; const addition = (a, b) => { // prettier-ignore return (a * 10 + b * 10) / 10; };
内容的提问来源于stack exchange,提问作者MuhammadTheProgrammer
相关产品推荐
相关产品推荐

