能,但只在语义安全的前提下。它基于ast分析智能判断:如var转const时会检查后续是否重新赋值,若存在则不显示该选项;仅对可推导作用域和副作用的代码激活灯泡,不处理eval、with等动态路径。

JavaScript Booster 能否替代手动重构?
能,但只在语义安全的前提下。它不是无脑替换工具,而是基于 AST 分析的智能重构器——比如把 var str1 = 'jspang.com'; 转成 const str1 = 'jspang.com'; 时,会检查 str1 后续是否被重新赋值;若存在 str1 = 'new value';,则“Convert to const”选项根本不会出现。
常见错误现象:光标停在代码上没反应 → 检查是否在 JavaScript/TypeScript 文件中(.js/.ts),且未禁用该语言的插件支持;或者文件被标记为 plain text(右下角语言模式显示“Plain Text”)。
- 必须启用
javascript.suggest.autoImports才能触发部分重构建议 - 不支持 JSX 内部表达式中的重构(如
{a === 1 ? 'x' : 'y'}无法直接转为 if-else) - 箭头函数转换后默认保留大括号块级结构,
return语句不会自动简化为隐式返回,需额外选“Convert to implicit return”
ESLint + Prettier 组合为何总报冲突?
因为 ESLint 的 semi、quotes、space-before-function-paren 等规则和 Prettier 的格式化行为重叠,导致保存时反复“格式化→报错→再格式化”。
关键解决点不是关掉某一方,而是让 ESLint 主动让位:安装 eslint-config-prettier 并在 .eslintrc.js 的 extends 数组末尾加上它。
- 不要设置
prettier.eslintIntegration: true(已废弃,VS Code 插件新版不识别) -
editor.formatOnSave应设为true,但仅绑定到 Prettier(通过editor.defaultFormatter指定) - 若项目用 TypeScript,还需加
plugin:@typescript-eslint/recommended,且确保eslint-config-prettier在其之后
为什么 refactor 提示只在部分代码行生效?
JavaScript Booster 的灯泡(light bulb)只对“可安全推导作用域和副作用”的代码段激活。它不处理动态执行路径,比如 eval()、with、或 Function 构造函数内的逻辑。
典型失效场景:
- 函数体为空或只含注释:
function foo() {}→ 无重构选项 - 条件判断中变量来自
globalThis或window→ 无法确认是否被外部修改,不提供 “Replace with ?:” - 对象解构赋值带默认值:
const { a = 1, b } = obj;→ “Split into declaration and initialization” 不可用,因默认值绑定逻辑无法拆分
Live Server 和调试插件如何避免端口冲突?
Live Server 默认用 5500 端口,而 Chrome Debugger 的 launch 配置若也设 "port": 5500,就会启动失败并报错 ERR_ADDRESS_IN_USE。
实操建议:
- Live Server 右键菜单选 “Change Port”,改成 5501 或其他空闲端口
- 调试配置中删掉
"port"字段,让 Chrome 自动分配(更稳妥) - 若必须固定端口,Chrome 调试配置里用
"port": 9222(Chrome DevTools 默认调试端口),而非 Web Server 端口
真正容易被忽略的是:多个项目同时开 Live Server 时,每个窗口独立监听,但 VS Code 工作区切换不会自动关闭前一个服务 —— 手动点击右下角 “Go Live” 按钮两次可关停当前服务。











