PyCharm 2026.2 Help

重构 JavaScript

重构 是在不改变应用行为的情况下更新源代码。 重构有助于让您的代码保持健壮、 DRY ,且易于维护。

移动符号重构

除了 移动文件和文件夹 外,PyCharm 还允许您移动 JavaScript 顶层符号。 移动符号重构 适用于 ES6 模块中的类、函数和变量。

移动类、函数或变量

  1. 选择要移动的符号。

  2. 按 F6 ,或从上下文菜单或主菜单中选择 重构 | 移动。 或者,选择 重构 | 重构此处 或按 Ctrl+Alt+Shift+T ,然后在列表中选择 移动。

    移动模块成员 对话框将打开。

  3. 指定目标文件并选择要移动的成员。

  4. 默认情况下,PyCharm 会自动将成员的可见性提升到所需级别。 如果您希望保持可见性级别不变,请在 可见性 中点击 按原样。

上移类成员重构

上移类成员 重构会在类层次结构中向上移动类方法——从当前类移动到超类。

示例:将类方法移动到超类

假设您有一个类 AccountingDepartment ,该类继承抽象类 Department。 在此示例中, 上移类成员 重构会将 printMeeting() 方法从 AccountingDepartment 移动到其超类 Department。

class Department { name; printName() { console.log("Department name: " + this.name); } } class AccountingDepartment extends Department { printMeeting() { console.log("The Accounting Department meets each Monday at 10am."); } generateReports() { console.log("Generating accounting reports..."); } }
class Department { name; printName() { console.log("Department name: " + this.name); } printMeeting() { console.log("The Accounting Department meets each Monday at 10am."); } } class AccountingDepartment extends Department { generateReports() { console.log("Generating accounting reports..."); } }

将类的方法移动到其超类

  1. 将插入符号置于您要上移成员的类中的任意位置。

  2. 从主菜单或上下文菜单中选择 重构 | 上拉成员。 上移成员 对话框打开。

  3. 在列表中选择要将方法移动到的超类。

  4. 要上移某个方法,请在 要上拉的成员 列表中选中其旁边的复选框。

重命名重构

除了在任意语言上下文中都可用的 重命名文件和文件夹 外,您还可以重命名类、方法、函数、变量和参数。 PyCharm 会在声明处更改符号名称,并默认更新当前项目中的所有用法。

重命名类及其方法

  1. 在编辑器中,将插入符放在要重命名的类或方法处,或选择该类或方法,然后按 Shift+F6 ,或从上下文菜单中选择 重命名。

  2. 在打开的 重命名 对话框中,输入类或方法的新名称。

  3. 可选:

    • 选中 在注释和字符串中搜索 和 在文本中搜索 复选框,以重命名注释、字符串文本和文本中的该类或方法的用法。

    • 默认情况下,将在整个项目中重命名该类或方法。 您可以在列表中选择其他 作用域。

保持类名与其所在文件名一致

当您重命名类时,PyCharm 还会在文件与其同名时建议重命名该文件。 如果您接受该建议,PyCharm 会在其他文件的 import 语句中更新此文件的名称。

重命名类和文件

如果您拒绝此建议,您可以随时使用 重命名文件 意图操作重命名该文件。 另一个意图操作会建议将该类移动到具有相应名称的新文件中。 建议名称的格式由 代码风格:JavaScript 页面上的 文件名约定 列表中所选样式决定。

ws_js_refactoring_rename_file_intention_custom_naming_convention.png

如果您刚创建了一个新文件,但在其中开始键入类或接口时又想到了更好的名称,此功能将很有用。 要调用意图操作,请将插入符放在相关类的名称处,然后按 Alt+Enter。

重命名函数、变量和参数

函数、变量和参数的 重命名 重构可能会就地执行,但您可以按 Shift+F6 在 重命名 对话框中配置重构范围。

要默认打开 重命名 对话框,请打开 设置 对话框(Ctrl+Alt+S ),转到 编辑器 | 代码编辑 ,并在 指定重构选项 区域中选择 在模态对话框中 选项。

重构设置:在模态对话框中打开设置
  1. 在编辑器中,将插入符放在要重命名的函数、变量或参数处,或选择它,然后按 Shift+F6 ,或从上下文菜单中选择 重命名。

  2. 如果 PyCharm 检测到该符号在注释或字符串中的用法,请指定是否也要重命名这些用法。

  3. 在带有画布的字段中,输入函数、变量或参数的新名称。

  4. 或者:

    再次按 Shift+F6 以打开 重命名 对话框。

    • 选中 在注释和字符串中搜索 和 在文本中搜索 复选框,以重命名注释、字符串文本和文本中的该符号的用法。

    • 默认情况下,将在整个项目中重命名该符号。 您可以在列表中选择其他 作用域。

重命名常量

  1. 在编辑器中,将插入符放在要重命名的常量处,或选择该常量,然后按 Shift+F6 ,或从上下文菜单中选择 重命名。

  2. 在打开的 重命名 对话框中,输入常量的新名称。

  3. 可选:

    • 选中 在注释和字符串中搜索 和 在文本中搜索 复选框,以重命名注释、字符串文本和文本中的该常量的用法。

    • 默认情况下,将在整个项目中重命名该常量。 您可以在列表中选择其他 作用域。

重命名符号的动态用法

由于 JavaScript 的动态特性,在某些情况下,动态引用是有效用法,应该进行重命名。 然而,通常情况下,重命名动态用法并非预期行为。 在下面的示例中,在 rename.test() 中将 test() 更改为 test1() 是正确的,而在 hello.test() 中则会出错。

class Rename{ test() { return 12345; } } let rename = new Rename(); let hello = window["Test"]; let a = rename.test(); let b = hello.test();
class Rename{ test1() { return 12345; } } let rename = new Rename(); let hello = window["Test"]; let a = rename.test1(); let b = hello.test();
class Rename{ test1() { return 12345; } } let rename = new Rename(); let hello = window["Test"]; let a = rename.test1(); let b = hello.test1();

PyCharm 在应用复杂重构之前始终会显示 预览 窗口。

  • 若要显示符号的动态用法,请按 显示动态用法切换按钮

  • 默认情况下,在 重构预览 工具窗口中,符号的所有动态用法都被标记为已排除,并归类到 代码中对 <symbol> 的动态引用 节点下。 要将重构应用于某个用法,请在其上下文菜单中选择 包含。

动态用法的重构预览

提取重构

PyCharm 提供多种 提取 重构,用于引入参数、变量、常量、字段、方法和函数。 要运行这些重构中的任意一个,请选择要重构的表达式,然后选择 重构 | <target>。 您可以选择整个表达式,或将插入符号置于表达式内部的任意位置,PyCharm 将帮助您完成选择。

引入参数

使用 引入参数 重构,将函数调用中的某个表达式替换为参数。 PyCharm 将相应更新该函数的声明及其调用。 新参数的默认值可以在函数体内进行初始化,或通过函数调用传递。

假设在函数 calculate_sum(i) 中有一段包含硬编码 1 的代码。 使用引入参数重构,您可以将这个硬编码的 1 替换为 i2 参数。 新的 i2 参数可以提取为 可选 或 必需。

示例 1:引入可选参数

新参数 i2 被提取为可选参数。 新参数在 calculate_sum(i) 的函数体内进行初始化,且 show_sum() 中对 calculate_sum(i) 的调用不变。

请参阅下文的 选择参数类型(可选)。

function calculate_sum(i) { alert('Adding ' + 1 + ' to ' + i); return 1 + i; } function show_sum() { alert('Result: ' + calculate_sum(5)); }
function calculate_sum(i, i2) { i2 = i2 || 1; alert('Adding ' + i2 + ' to ' + i); return i2 + i; } function show_sum() { alert('Result: ' + calculate_sum(5)); }

示例 2:引入必需参数

将新参数 i2 提取为必需参数, show_sum() 中对 calculate_sum(i) 的调用也随之更改。

参阅 选择参数类型(必需) 下文。

function calculate_sum(i) { alert('Adding ' + 1 + ' to ' + i); return 1 + i; } function show_sum() { alert('Result: ' + calculate_sum(5)); }
function calculate_sum(i, i2) { alert('Adding ' + i2 + ' to ' + i); return i2 + i; } function show_sum() { alert('Result: ' + calculate_sum(5, 1)); }

引入参数

  1. 在编辑器中,将插入符号置于您想转换为参数的表达式内,然后按 Ctrl+Alt+P ,或从上下文菜单中选择 重构 | 引入参数。

    或者,执行以下任一操作:

    • 按 Ctrl+Alt+Shift+T ,然后选择 引入参数。

    • 转到 重构 | 提取 | 参数。

  2. 如果在当前插入符号位置检测到多个表达式,请从 表达式 列表中选择所需的表达式。

    ws_js_extract_parameter_select_expression.png
  3. 如果找到所选表达式的多个出现,请在 找到多个出现 列表中选择 仅替换此处出现 或 替换所有出现位置。

    ws_js_extract_parameter_multiple_occurrences.png

    最后,将显示用于配置重构的弹出窗口。

    ws_js_extract_parameter_specify_parameter_name_and_type.png
  4. 选择 生成 JSDoc 以生成 JSDoc 注释块。 如果您需要指定自定义的默认参数值,这可能会有所帮助。

  5. 选择新参数的类型(optional 或 required ),并在适用时指定其默认值:

    • 如果选中 可选参数 复选框,则将在函数体内使用默认值初始化该参数。

      参阅 Introduce Parameter example 1 上文。

    • 如果清除 可选参数 复选框,则默认参数值将通过现有的函数调用传递。 所有函数调用都将根据新的函数签名进行更改,并在函数体中添加参数初始化。

      参阅 Introduce Parameter example 2 上文。

    初始情况下,PyCharm 会将调用该重构的位置处的表达式作为默认值。 在大多数情况下,您无需更改它。 如果仍有必要,请在 JSDoc 注释中按照 @param <parameter name> - <default value> 的格式指定另一个默认参数值。

  6. 在列表中双击以接受建议的参数名称之一,或在带有画布的字段中指定自定义名称。 准备就绪后,按 Enter。

    ws_js_extract_parameter_result.png

    另请注意,在 ES6 代码中,将应用新的默认函数参数语法 function calculate_sum(i, i2 = 1) ,而非 i2 = i2 || 1;。 在 https://developer.mozilla.org 网站 了解有关默认函数参数的更多信息。

选择重构模式

您可以直接在编辑器中(就地模式) as described above 引入参数,或使用 “引入参数”对话框。 这两种方法相当相似,区别如下:

  • 预览重构结果。

    在对话框中,您可以点击 预览 ,并在 查找 工具窗口的专用选项卡中检查预期更改。 在就地模式下,此功能不可用。

  • 指定默认参数值。

    在对话框中,PyCharm 会在 值 字段中建议默认参数值,您可以接受该建议或指定其他值。 在就地模式下,PyCharm 将调用该重构的位置处的表达式作为默认参数值。 要指定另一个值,您必须使用 JSDoc 注释块。

默认情况下,PyCharm 运行 引入参数 重构的就地模式。 要使用 提取参数 对话框,请打开 设置 对话框(Ctrl+Alt+S ),转到 编辑器 | 代码编辑 ,并在 重构 区域中选择 在模态对话框中 选项。

引入变量

使用 引入变量 重构,将表达式替换为 函数作用域变量(var) 或 块作用域变量(let)。 该重构使您的源代码更易于阅读和维护。

假设您有一个函数,其 return 语句中包含部分硬编码的表达式:

Parenizor.method('toString', function ()) { return '(' + this.getValue() + ')'; }

使用引入变量重构,您可以将 '(' + this.getValue() + ')' 表达式替换为一个变量,例如 string。 提取变量的作用域取决于其声明所使用的语句 var 或 let ,以及新变量声明所在的上下文(在函数内或函数外)。

示例 1:引入块作用域变量并使用 let 语句进行声明

变量 string 是从 return 语句中的 '(' + this.getValue() + ')' 表达式中提取的。 新变量使用 let 语句在 Parenizor.method('toString', function ()) 内进行声明。

Parenizor.method('toString', function ()) { return '(' + this.getValue() + ')'; }
Parenizor.method('toString', function ()) { let string = '(' + this.getValue() + ')'; return string; }

示例 2:引入变量并在任意函数外进行声明

变量 appName 是从 navigator.appName 表达式中提取的,并使用 var 语句在任意函数外部进行声明。

let browserName = "N/A"; if (navigator.appName.indexOf("Netscape") !== -1) { browserName = "NS"; } else if (navigator.appName.indexOf("Microsoft") !== -1) { browserName = "MSIE"; } else if (navigator.appName.indexOf("Opera") !== -1) { browserName = "O"; }
let browserName = "N/A"; let appName = navigator.appName; if (appName.indexOf("Netscape") !== -1) { browserName = "NS"; } else if (appName.indexOf("Microsoft") !== -1) { browserName = "MSIE"; } else if (appName.indexOf("Opera") !== -1) { browserName = "O"; }

引入变量

  1. 在编辑器中,选择要转换为变量的表达式,然后按 Ctrl+Alt+V ,或从上下文菜单中选择 重构 | 引入变量。

    或者,执行以下任一操作:

    • 按 Ctrl+Alt+Shift+T ,然后选择 引入变量。

    • 转到 重构 | 提取 | 变量。

  2. 如果在当前插入符号位置检测到多个表达式,请从 表达式 列表中选择所需的表达式。

    提取变量 - 选择一个表达式
  3. 如果找到所选表达式的多个出现,请在 找到多个出现 列表中选择 仅替换此处出现 或 替换所有出现位置。

    提取变量 - 多次出现

    最后,将显示用于配置重构的弹出窗口。

  4. 从列表中选择用于声明新变量的语句:

    提取变量 - 选择声明类型
  5. 在列表中双击以接受建议的参数名称之一,或在带有画布的字段中指定自定义名称。 准备就绪后,按 Enter。

选择重构模式

您可以直接在编辑器中(就地模式) as described above 或使用 提取变量对话框。 默认情况下,PyCharm 会在就地模式下运行引入变量重构。 要使用 提取变量 对话框,请打开 设置 对话框(Ctrl+Alt+S ),转到 编辑器 | 代码编辑 ,并在 重构 区域选择 在模态对话框中 选项。

引入常量

使用 引入常量 重构,将表达式替换为 常量。 该重构使您的源代码更易于阅读和维护。 它还帮助您避免使用硬编码的常量,而不解释它们的值或用途。

在类中,您可以引入只读字段;如果有多个适用的作用域,则可以选择作用域。 在其他上下文中,PyCharm 仅引入局部常量。

示例 1:选择引入常量的作用域

假设您有一个类 AccountingDepartment ,其方法 printName() 中硬编码了 "Department name :"。

class AccountingDepartment { name; printName() { console.log("Department name: " + this.name); } printMeeting() {... } generateReports() {... } }

PyCharm 可以将新的常量作为局部常量引入,并在 printName() 函数内声明,或者作为全局或模块常量引入,并在类外声明。

class AccountingDepartment { name; printName() { const departmentName = "Department name: "; console.log(departmentName + this.name); } printMeeting() {... } generateReports() {... } }
const departmentName = "Department name: "; class AccountingDepartment { name; printName() { console.log(departmentName + this.name); } printMeeting() {... } generateReports() {... } }

示例 2:在不选择作用域的情况下引入常量

如果从任意类外调用引入常量重构,PyCharm 会自动引入一个局部变量,并在当前函数或代码块内声明它。

let output = MyFunction(5, 8); document.writeln("The value is .".output);
let output = MyFunction(5, 8); const Value = "The value is "; document.writeln(Value.output);

引入常量

  1. 在编辑器中,选择要转换为常量的表达式,然后按 Ctrl+Alt+C 或从上下文菜单中选择 重构 | 引入常量。

    或者,执行以下任一操作:

    • 按 Ctrl+Alt+Shift+T ,然后选择 引入常量。

    • 转到 重构 | 提取 | 常量。

  2. 如果在当前插入符号位置检测到多个表达式,请从 表达式 列表中选择所需的表达式。

    引入常量:选择表达式
  3. 如果在类中调用引入常量重构,请引入只读字段或选择新常量的作用域,参阅 示例 1。

    引入常量:选择作用域

    对于全局常量,可能会找到所选表达式的多处出现位置。 请在 找到多个出现 列表中选择 仅替换此处出现 或 替换所有出现位置。

    引入常量:检测到全局常量的多个出现
  4. 在列表中双击以接受建议的参数名称之一,或在带有画布的字段中指定自定义名称。 准备就绪后,按 Enter。

    引入常量:选择名称

引入字段

引入字段 重构会声明一个新字段,并使用所选表达式对其进行初始化。 原始表达式会被替换为该字段的用法。

在下面的示例中,引入的是同一个字段 _calcArea。 这些示例演示了初始化该引入字段的三种不同方式。

示例 1:引入的字段在封闭方法中初始化

class Rectangle { constructor(height, width) { this.height = height; this.width = width; } get area() { return this.calcArea(); } calcArea() { return this.height * this.width; } }
class Rectangle { constructor(height, width) { this.height = height; this.width = width; } _calcArea; get area() { this._calcArea = this.calcArea(); return this._calcArea; } calcArea() { return this.height * this.width; } }

示例 2:提取的字段在其声明中初始化

class Rectangle { constructor(height, width) { this.height = height; this.width = width; } get area() { return this.calcArea(); } calcArea() { return this.height * this.width; } }
class Rectangle { constructor(height, width) { this.height = height; this.width = width; } _calcArea = this.calcArea(); get area() { return this._calcArea; } calcArea() { return this.height * this.width; } }

示例 3:提取的字段在类的构造函数中初始化

class Rectangle { constructor(height, width) { this.height = height; this.width = width; } get area() { return this.calcArea(); } calcArea() { return this.height * this.width; } }
class Rectangle { constructor(height, width) { this._calcArea = this.calcArea(); this.height = height; this.width = width; } _calcArea; get area() { return this._calcArea; } calcArea() { return this.height * this.width; } }

引入字段

  1. 在编辑器中,选择要转换为字段的表达式,然后按 Ctrl+Alt+F ,或从上下文菜单中选择 重构 | 引入字段。

    或者,执行以下任一操作:

    • 按 Ctrl+Alt+Shift+T ,然后选择 引入字段。

    • 转到 重构 | 提取 | 字段。

  2. 在弹出窗口中,选择新字段将在哪进行初始化:

    就地提取字段
  3. 在列表中双击以接受建议的参数名称之一,或在带有画布的字段中指定自定义名称。 准备就绪后,按 Enter。

选择重构模式

默认情况下,PyCharm 运行 引入字段 重构的就地模式, as described above。

要在重构时使用提取字段对话框,请打开 设置 对话框(Ctrl+Alt+S ),转到 编辑器 | 代码编辑 ,并在 重构 区域中选择 在模态对话框中 选项。

提取方法

提取方法 重构可让您使用提取的代码创建具名方法或函数。 当调用 提取方法 重构时,PyCharm 会检测所选代码片段的输入变量和输出变量。 检测到的输出变量将用作提取的方法或函数的返回值。

在下面的示例中,从 c = a + b; 表达式中提取一个函数。

示例 1:从另一个函数内的表达式中提取全局作用域函数

调用重构的位置处的 c = a + b; 表达式位于 MyFunction() 函数内。 选择了 global 作为目标作用域。

示例 1.1:生成函数声明

function MyFunction(a, b) { c = a + b; return (c * c); } result = MyFunction(4, 6); document.write(result);
function extracted(a, b) { c = a + b; } function MyFunction(a, b) { extracted(a, b); return (c * c); } result = MyFunction(4, 6); document.write(result);

示例 1.2:在表达式内声明提取的函数

function MyFunction(a, b) { c = a + b; return (c * c); } result = MyFunction(4, 6); document.write(result);
let extracted = function (a, b) { c = a + b; }; function MyFunction(a, b) { extracted(a, b); return (c * c); } result = MyFunction(4, 6); document.write(result);

示例 2:从任意函数外的表达式中提取全局作用域函数

调用重构的位置处的 c = a + b; 表达式位于任意函数外。 因此,无法选择目标作用域。

示例 2.1:生成函数声明

c = a + b;
function extracted() { c = a + b; } extracted();

示例 2.2:提取的函数在表达式内声明

c = a + b;
let extracted = function () { c = a + b; }; extracted();

示例 3:提取在封闭函数内定义的函数

调用重构的位置处的 c = a + b; 表达式位于 MyFunction() 函数内。 选择了 function MyFunction 作为目标作用域。

function MyFunction(a, b) { c = a + b; return (c * c); } result = MyFunction(4, 6); document.write(result);
function MyFunction(a, b) { function extracted() { c = a + b; } extracted(); return (c * c); } result = MyFunction(4, 6); document.write(result);

提取函数

  1. 在编辑器中,选择要转换为函数的代码片段,然后按 Ctrl+Alt+M ,或从上下文菜单中选择 重构 | 提取方法。

    或者,执行以下任一操作:

    • 按 Ctrl+Alt+Shift+T ,然后选择 提取方法。

    • 转到 重构 | 提取 | 方法。

  2. 如果所选表达式位于函数内,请在列表中选择目标作用域:

    • 如果您选择 global ,提取的函数将会在任意函数外声明。 参阅 Example 1 上文。

    • 要在当前封闭函数内定义提取的函数,请选择 function <current enclosing function name>。 参阅 Example 3 上文。

    提取方法 - 选择目标作用域
  3. 指定要提取的函数名称。

    提取方法 - 选择要提取函数的名称

默认打开提取函数对话框

  • 打开 设置 对话框(Ctrl+Alt+S ),转到 编辑器 | 代码编辑 ,并在 重构 区域选择 在模态对话框中 选项。

提取超类

提取超类 重构会基于当前类的成员创建一个新的抽象类。 创建的类会被自动继承。

假设您有一个类 AccountingDepartment ,并希望其中的 printName() 方法会被复用。

class AccountingDepartment { name; printName() { console.log("Department name: " + this.name); } printMeeting() { console.log("The Accounting Department meets each Monday at 10am."); } generateReports() { console.log("Generating accounting reports..."); } }

您可以提取一个超类 Department ,并将 printName 以及 名称 字段包含在其中。

class Department { name; printName() { console.log("Department name: " + this.name); } } class AccountingDepartment extends Department { printMeeting() { console.log("The Accounting Department meets each Monday at 10am."); } generateReports() { console.log("Generating accounting reports..."); } }

提取超类

  1. 将插入符号置于您要提取超类的类中的任意位置。

  2. 在主菜单中选择 重构 | 提取 | 超类 ,或在上下文菜单中选择 重构 | 提取超类。 将打开 提取超类 对话框。

  3. 指定新超类的名称,并选中您要包含到其中的类成员旁边的复选框。 可选:标记您希望设为抽象的成员。

  4. 在 目标文件 字段中,指定新类所在文件的位置。 默认情况下,该字段会显示调用重构的当前文件路径。

  5. 选择 提取超类。 PyCharm 创建一个新类,并用 继承 标记源类。

    要创建一个超类,并在方法的参数中将对源类的引用替换为对该超类的引用,请选择 提取超类并在可能的情况下使用。 PyCharm 会在 查找 工具窗口的 重构预览 窗格中显示建议的更改。

引入对象或数组解构

解构让您可以轻松地将数组和对象中的值解包到变量中。 此功能具有非常简洁的语法,当您需要在应用程序中传递数据时经常使用。 有关更多信息,参阅 Exploring ES6。

在 PyCharm 中,您可以使用意图操作 Alt+Enter 调用解构。 使用 替换为对象/数组解构 操作,原始赋值将被移除。 若要保留原始赋值,请使用 引入对象/数组解构。

替换原始赋值

  1. 将插入符放在数组或对象中的某个值处,然后按 Alt+Enter。

  2. 从列表中选择 替换为对象解构 或 替换为数组解构。

    如果数组或对象中的某些值未被使用,这些元素将被跳过:

保留原始赋值

  1. 将插入符放在数组或对象中的某个值处,然后按 Alt+Enter。

  2. 从列表中选择 引入对象解构 或 引入数组解构。

    该意图操作在处理 React 类组件时非常方便:

为函数生成解构参数

  1. 将插入符号置于函数的参数处,然后按 Alt+Enter。

  2. 在列表中选择 将参数转换为对象。

    通过意图操作进行解构:将参数转换为对象

内联重构

内联重构与 提取重构 相反。

示例 1:内联变量

内联变量 重构会用其初始值设定项替换变量或常量的冗余用法。 此类重构仅适用于块级作用域变量和函数作用域变量。

Parenizor.method('toString', function () { var string = '(' + this.getValue() + ')'; return string; }
Parenizor.method('toString', function () { return '(' + this.getValue() + ')'; }

示例 2:内联函数

内联方法/内联函数 重构会将方法或函数的函数体放入其调用方的函数体中;该方法/函数本身将被删除。

在下面的示例中, Sum() 的主体被放入 Multiplication() 和 Division() 的主体中。

function Sum(a, b) { return a + b; } function Multiplication(a, b) { c = Sum(a, b); d = c * c; return d; } function Division(a, b) { c = Sum(a, b); d = Multiplication(a, b); result = c / d; return result; }
function Multiplication(a, b) { c = a + b; d = c * c; return d; } function Division(a, b) { c = a + b; d = Multiplication(a, b); result = c / d; return result; }

运行内联重构

  1. 在编辑器中,将插入符放在要内联的符号处,然后按 Ctrl+Alt+N ,或从上下文菜单或主菜单中选择 重构 | 内联。

  2. 在与所选符号对应的 内联 对话框中,确认内联重构。

更改签名重构

使用 Change Signature 重构来更改函数名称、添加、删除、重新排序和重命名参数,并沿调用层次结构传播新参数。

您还可以使用 引入参数 重构添加参数。

下面的示例展示了运行更改签名重构的不同方式。 在所有情况下,函数 result() 被重命名为 generate_result() ,并向该函数添加了一个新参数 input。 这些示例展示了根据重构设置,函数调用、调用函数 show_result() 以及其他代码片段可能受到的影响。

示例 1:重命名函数、添加参数并通过函数调用传递其值

在这个示例中,函数 result() 被重命名为 generate_result() ,添加了参数 input ,并在函数调用中将值 100 作为参数传递。

function result() { } function show_result() { alert('Result: ' + result()); }
function generate_result(input) { } function show_result() { alert('Result: ' + generate_result(100)); }

示例 2:重命名函数并添加默认参数

在这个示例中,函数 result() 被重命名为 generate_result()。 添加了默认参数 input ,其值为 100。 新参数在 generate_result() 在 ES6 语言级别的 function generate_result(input = 100) {} 格式或 ES5 的 input = input || 100 格式进行初始化。

function result() { } function show_result() { alert('Result: ' + result()); }
function generate_result(input = 100) { } function show_result() { alert('Result: ' + generate_result()); }

示例 3:重命名函数、添加默认参数,并将该参数传播到函数调用

在这个示例中,函数 result() 被重命名为 generate_result()。 添加了默认参数 input ,其值为 100。 新参数在 generate_result() 在 ES6 语言级别的 function generate_result(input = 100) {} 格式或 ES5 的 input = input || 100 格式进行初始化。 参数 input 会通过调用函数 show_result() 传播,因此函数调用也随之更改。

function result() { } function show_result() { alert('Result: ' + result()); }
function generate_result(input = 100) { } function show_result() { alert('Result: ' + generate_result()); }

调用更改签名

  • 在编辑器中,将插入符号置于要重构的函数名称内,然后按 Ctrl+F6 ,或从上下文菜单或主菜单中选择 重构 | 更改签名。 将打开 更改签名 对话框。

重命名函数

  • 在 更改签名 对话框 Ctrl+F6 ,编辑 名称 字段。

管理函数参数

  • 在 更改签名 对话框 Ctrl+F6 ,使用参数表及其右侧的按钮:

    • 要添加新参数,请点击 添加按钮 &#xa0; Alt+Insert ,并指定新参数的名称及其默认值,或指定通过函数调用传递的值。

      参阅 Example 1 和 Example 2 上文。

    • 要移除参数,请点击相应行中的任意单元格,然后点击 “删除”按钮 &#xa0; Alt+Delete。

    • 要重新排序参数,请使用 上一个匹配项按钮 &#xa0; Alt+Up 和 下一个匹配项按钮 &#xa0; Alt+Down。

    • 要重命名参数,请编辑 名称 字段。

    • 如果必要, 传播新参数 到调用当前函数的函数。

沿调用层次结构传播参数

  1. 在 更改签名 对话框 Ctrl+F6 ,选择参数并点击 传播参数按钮。 选择要传播新参数的方法 对话框将打开。 左侧窗格显示函数调用的层次结构。 当您选择某个函数时,右侧窗格会在 调用方方法 和 被调用方方法 字段中分别显示该函数的代码以及其调用的函数的代码。

    请参见 Example 3上方。

  2. 在左侧窗格中,选中您希望传播参数的函数旁边的复选框,然后点击 确定。

预览更改并完成重构

  1. 在 更改签名 对话框中,点击 预览。

  2. 在 查找工具窗口 的 重构预览 选项卡中, 查看预期更改 ,进行必要的调整,然后在准备就绪后点击 执行重构。

将默认导出转换为命名导出

对于类、函数、常量变量、字符串、对象和类型,您可以将 export default 语句替换为命名 导出 语句,并相应更新对应的 import 语句。

如果某个符号被再导出,相应的 导出 语句也会更新。

该重构可从 export default 和 import 语句中调用。

  • 将插入符号置于 export default 语句处或您正在导出的名称处,按 Alt+Enter ,并选择 将默认导出转换为命名导出。 要切换预览,请按 Ctrl+Q。

    从 export 语句调用默认导出转换
  • 在 import 语句中,将插入符号置于导入内容的名称处,按 Alt+Enter ,并选择 将默认导出转换为命名导出。 预览(Ctrl+Q )显示将如何更新 import 语句。

    从 import 语句调用默认导出转换

将命名导出转换为默认导出

对于类、函数、常量变量、字符串、对象和类型,您可以将命名 导出 语句替换为 export default 语句,并相应更新对应的 import 语句。

该重构可从 export default 和 import 语句中调用。

  • 在 导出 语句中,将插入符号置于您正在导出的名称处,按 Alt+Enter ,并选择 将命名导出转换为默认导出。 要切换预览,请按 Ctrl+Q。

    在 export 语句中将命名导出转换为默认导出
  • 在 import 语句中,将插入符号置于导入内容的名称处,按 Alt+Enter ,并选择 将命名导出转换为默认导出。 预览(Ctrl+Q )显示将如何更新 import 语句。

    在 export 语句中将命名导出转换为默认导出
2026年 7月 14日