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

Prettier为何自动包裹匿名函数?如何关闭该行为?

Prettier格式化new function()语法的原因及处理方式

问题场景

原始代码:

namespace.namespace2 = new function() {/* logic here*/}

经过Prettier格式化后代码变为:

namespace.namespace2 = new (function() {/* logic here*/})();

疑问:为什么会出现这种格式化行为?找不到关闭该行为的配置选项,已尝试官网Playground所有设置、查阅文档及搜索相关内容,均未解决。

原因解释

Prettier做这个修改是为了明确代码的语法逻辑:new function() {}本质是创建一个匿名构造函数的实例,和new (function(){})()的运行效果完全等价,但后者的写法更直观,能清晰区分构造函数的范围,避免阅读时产生歧义(比如容易被误判为new function作为普通函数调用的语法)。

处理方式

Prettier的设计理念是提供"唯一的格式化标准",因此没有针对该行为的关闭选项。如果需要保留原始写法,可以通过添加Prettier忽略注释来跳过这段代码的格式化:

// prettier-ignore
namespace.namespace2 = new function() {/* logic here*/}

内容的提问来源于stack exchange,提问作者ZaTrox

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 18:53:10