JavaScript重构
最后修改时间:2023年9月28日所需插件:
Javascript and TypeScript
- 该插件仅在 IntelliJ IDEA Ultimate 中可用,默认情况下启用。
重构意味着更新源代码而不是改变应用程序的行为。重构可以帮助您保持代码可靠、干燥且易于维护。
移动符号重构
除了移动文件和文件夹之外,IntelliJ IDEA 还允许您移动 JavaScript 顶级符号。移动符号重构适用于 ES6 模块中的类、函数和变量。
移动类、函数或变量
选择要移动的符号。
单击或选择重构 |从上下文菜单或主菜单移动。或者,选择重构 |重构此或按,然后从列表中选择“移动” 。F6CtrlAltShift0T
“移动模块”对话框打开。
指定目标文件并选择要移动的成员。
默认情况下,IntelliJ IDEA 会自动将成员的可见性提高到所需的级别。如果要保持可见性级别不变,请在“可见性”中单击“原样”。
拉动类成员重构
Pull类成员重构将类方法在类层次结构中向上移动——从当前类到超类。
译文:将类方法移至超类
假设您有一个AccountingDepartment
扩展抽象类的类Department
。在示例中,“向上取类成员”重构将printMeeting()
方法从其移动AccountingDepartment
到其超类Department
。
项目部门{名称; printName() { console.log("部门名称:" + this.name); } } class AccountingDepartment extends Department { printMeeting() { console.log("会计部门每周一上午 10 点开会。"); }generateReports() { console.log("正在生成会计报告..."); } }
项目部门{名称; printName() { console.log("部门名称:" + this.name); } printMeeting() { console.log("会计部门每周一上午10点开会。"); } } class AccountingDepartment extends Department {generateReports() { console.log("正在生成会计报告..."); } }
将类的方法转向超类
将插入符号放在类中要拉出成员的任意位置。
从主菜单或上下文菜单中选择重构|拉出成员。将打开“拉出成员”对话框。
从列表中,选择最方法移动到的超类。
要拉出方法,请在“要拉出的成员”列表中选中该方法旁边的前台。
重命名重构
除了在任何语言的上下文中都可用的重命名文件和文件夹之外,您还可以重命名类、方法、函数、变量和参数。 IntelliJ IDEA 更改其声明中的符号名称以及情况默认下其在当前项目中的所有用途。
重命名类及其方法
在编辑器中,放置插入符号或选择要重命名的类别或方法,然后按或选择Refactor |从上下文菜单或主菜单重命名。ShiftF6
在打开的“重命名”对话框中,键入类别或方法的新名称。
任选:
选中“在注释和字符串中搜索”和“搜索文本出现”构成,以重命名注释、字符串文字和文本中类或方法的用法。
默认情况下,类或方法在整个项目中被重命名。您可以从列表中选择另一个范围。
保持类名称和包含文件的名称一致
当您重命名类时,如果文件具有相同的名称,IntelliJ IDEA 还会建议重命名该文件。如果您接受建议,IntelliJ IDEA 会在其他文件的导入语句中更新此文件的名称。
如果您拒绝此建议,名称稍后可以使用“重命名文件”北极操作重命名该文件。另一个北极操作建议将类移动到具有相应名称的新文件中。建议的格式由代码样式:JavaScript页面上的文件名约定列表中选择的样式确定。
如果您刚刚有了一个新文件,但在开始其中键入类或接口时想产生一个更好的名称,那么这非常有用。要调用简单操作,创建插入符号放在感兴趣的类的名称上处,然后按。AltEnter
重命名函数、参数和参数
函数、变量和参数的重命名重构可能就可以执行,但您可以按在重命名模型中配置重构范围。ShiftF6
要默认打开“重命名”对话框,请打开“设置”对话框 ( ),然后转至编辑器|代码编辑,然后在“指定重构选项”区域中选择“在模式对话框中”选项。CtrlAlt0S
在编辑器中,放置插入符号或选择要重命名的函数、变量或参数,然后按或选择Refactor |从上下文菜单或主菜单重命名。ShiftF6
如果 IntelliJ IDEA 检测到注释或字符串中符号的用法,请指定您是否希望也重命名这些用法。
在画布字段中,键入函数、变量或参数的新名称。
或者:
再按一次打开“重命名”对话框。ShiftF6
选中“在注释和字符串中搜索”和“搜索文本出现”复选框,以重命名注释、字符串文字和文本中符号的用法。
默认情况下,符号在整个项目中被重命名。您可以从列表中选择另一个范围。
重命名常量
在编辑器中,放置插入符号或选择要重命名的常量,然后按或选择Refactor | 从上下文菜单或主菜单重命名。ShiftF6
在打开的“重命名”对话框中,键入常量的新名称。
可选:
选中“在注释和字符串中搜索”和“搜索文本出现”复选框,以重命名常量在注释、字符串文字和文本中的用法。
默认情况下,该常量在整个项目中被重命名。您可以从列表中选择另一个范围。
重命名符号的动态用法
由于 JavaScript 的动态特性,在某些情况下,动态引用是有效的用法,应该重命名。然而,重命名动态用法通常不是预期的行为。在下面的示例中,更改test()
为test1()
inrename.test()
是正确的,而 inhello.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();
因此,IntelliJ IDEA在应用复杂的重构之前始终显示预览窗口。
提取重构
IntelliJ IDEA 提供了各种Extract重构来引入参数、变量、常量、字段、方法和函数。要运行任何这些重构,请选择要重构的表达式,然后选择“重构”|“重构”。<目标>。您可以选择整个表达式或将插入符号放置在其中的任意位置,IntelliJ IDEA 将帮助您进行选择。
参数介绍
使用引入参数重构将函数调用中的表达式替换为参数。IntelliJ IDEA 将相应地更新函数的声明和调用。新参数的默认值可以在函数体内初始化或通过函数调用传递。
假设您有一段1
在函数中硬编码的代码calculate_sum(i)
。通过引入参数重构,您可以1
用i2
参数替换此硬编码。新i2
参数可以作为可选参数或根据需要提取。
示例1:引入可选参数
提取新参数i2
作为可选参数。新参数在 的主体中初始化,并且incalculate_sum(i)
的调用没有改变。calculate_sum(i)
show_sum()
请参阅下面的选择参数类型(可选)。
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:引入必需的参数
提取一个新参数作为必需参数, ini2
的调用也相应改变。calculate_sum(i)
show_sum()
请参阅下面的选择参数类型(必需)。
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));
}
引入一个参数
在编辑器中,将插入符号放在要转换为参数的表达式内,然后按或选择Refactor | 从上下文菜单中引入参数。CtrlAlt0P
或者,执行以下操作之一:
按并选择引入参数。CtrlAltShift0T
转到重构 | 摘录| 范围。
如果在当前插入符号位置检测到多个表达式,请从“表达式”列表中选择所需的表达式。
如果找到多个所选表达式,请从“找到多个匹配项”列表中选择“仅替换此匹配项”或“替换所有匹配项”。
最后,出现配置重构的弹出窗口。
选择“生成 JSDoc”以生成JSDoc注释块。如果您需要指定自定义默认参数值,这可能会有所帮助。
选择新参数的类型(可选或必需)并指定其默认值(如果适用):
如果选中可选参数复选框,则参数将使用函数体中的默认值进行初始化。
请参阅上面的引入参数示例 1。
如果清除可选参数复选框,则默认参数值将通过现有函数调用传递。所有函数调用都将根据新函数签名进行更改,并且参数初始化将添加到函数体中。
请参阅上面的引入参数示例 2。
最初,IntelliJ IDEA 接受调用重构的表达式作为默认值。大多数情况下您不需要更改它。如果仍然需要,请在 JSDoc 注释中以 格式指定另一个默认值
@param <parameter name> - <default value>
。通过在列表中双击建议的参数名称之一来接受它,或者在带有红色画布的字段中指定自定义名称。准备好后按下。Enter
另请注意,在 ES6 代码中,
function calculate_sum(i, i2 = 1)
将应用新的默认函数参数语法而不是i2 = i2 || 1;
. 从https://developer.mozilla.org 网站了解有关默认函数参数的更多信息。
选择重构模式
您可以如上所述直接在编辑器中(在就地模式下)提取参数,或使用“引入参数”对话框。这两种方法很相似,区别如下:
在对话框中,您可以单击“预览”并在“查找”工具窗口的专用选项卡中检查预期的更改。在就地模式下,此功能不可用。
在该对话框中,IntelliJ IDEA 在“值”字段中建议默认参数值,您可以在其中接受建议或指定其他值。在就地模式下,IntelliJ IDEA 将调用重构的表达式视为默认参数值。要指定另一个值,您必须使用 JSDoc 注释块。
默认情况下,IntelliJ IDEA 在就地模式下运行引入参数重构。要使用“提取参数”对话框,请打开“设置”对话框 ( ),然后转至编辑器| 代码编辑,然后选择“重构”区域中的“在模式对话框中”选项。CtrlAlt0S
引入变量
使用引入变量重构将表达式替换为函数范围变量 (var)或块范围变量 (let)。这种重构使您的源代码更易于阅读和维护。
假设您有一个函数,其语句中的表达式部分是硬编码的return
:
Parenizor.method('toString', function ())
{
return '(' + this.getValue() + ')';
}
'(' + this.getValue() + ')'
表达式替换为变量,例如string
。提取的变量的范围取决于其声明中使用的语句var
或let
声明新变量的上下文(函数内部或外部)。示例 1:通过 let 语句声明引入块作用域变量
从语句中的表达式中string
提取变量。新变量是用内部语句声明的。'(' + this.getValue() + ')'
return
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
任何函数外部的语句进行声明。
var 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";
}
var browserName = "N/A";
var 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";
}
引入一个变量
在编辑器中,选择要转换为变量的表达式,然后按或选择Refactor | 从上下文菜单中引入变量。CtrlAlt0V
或者,执行以下操作之一:
按并选择引入变量。CtrlAltShift0T
转到重构 | 摘录| 多变的。
如果在当前插入符号位置检测到多个表达式,请从“表达式”列表中选择所需的表达式。
如果找到多个所选表达式,请从“找到多个匹配项”列表中选择“仅替换此匹配项”或“替换所有匹配项”。
最后,出现配置重构的弹出窗口。
从列表中选择要在新变量声明中使用的语句:
通过在列表中双击建议的参数名称之一来接受它,或者在带有红色画布的字段中指定自定义名称。准备好后按下。Enter
选择重构模式
您可以如上所述在编辑器中直接提取变量(在就地模式下),或者使用“提取变量”对话框。默认情况下,IntelliJ IDEA 在就地模式下运行引入变量重构。要使用“提取变量”对话框,请打开“设置”对话框 ( ),然后转至编辑器 | 代码编辑,然后选择“重构”区域中的“在模式对话框中”选项。CtrlAlt0S
引入常数
使用引入常量重构将表达式替换为常量。这种重构使您的源代码更易于阅读和维护。它还可以帮助您避免使用硬编码常量,而不对其值或用途进行任何解释。
在类内部,您可以引入只读字段或选择一个范围(如果多个范围合适)。在其他情况下,IntelliJ IDEA 仅引入局部常量。
示例 1:选择引入常量的范围
假设您有一个带有硬编码AccountingDepartment
方法的类。printName()
"Department name :"
class AccountingDepartment {
name;
printName() {
console.log("Department name: " + this.name);
}
printMeeting() {...
}
generateReports() {...
}
}
IntelliJ IDEA 可以引入一个新常量作为本地常量并在函数内部声明它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:在不选择范围的情况下引入常量
如果从任何类外部调用 Introduce Constant 重构,IntelliJ IDEA 会自动引入局部变量并在当前函数或块内声明它。
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);
引入一个常数
在编辑器中,选择要转换为常量的表达式,然后按或选择Refactor | 从上下文菜单中引入常量。CtrlAlt0C
或者,执行以下操作之一:
按并选择引入常数。CtrlAltShift0T
转到重构 | 摘录| 持续的。
如果在当前插入符号位置检测到多个表达式,请从“表达式”列表中选择所需的表达式。
如果从类内部调用重构,请引入只读字段或选择新常量的范围,请参阅示例 1。
对于全局常量,可以找到所选表达式的多次出现。从找到的多个匹配项列表中选择仅替换此匹配项或替换所有匹配项。
通过在列表中双击建议的参数名称之一来接受它,或者在带有红色画布的字段中指定自定义名称。准备好后按下。Enter
介绍领域
Introduce Field重构声明一个新字段并使用所选表达式对其进行初始化。原来的表达式被替换为字段的用法。
笔记
Introduce Field 重构仅在类中可用。
在下面的示例中,_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;
}
}
引入一个字段
选择重构模式
默认情况下,IntelliJ IDEA 直接在编辑器中运行 Introduce Field 重构(就地模式),如上所述。
要在重构时使用“提取字段”对话框,请打开“设置”对话框 ( ),然后转到“编辑器”|“提取字段”对话框。代码编辑,然后选择“重构”区域中的“在模式对话框中”选项。CtrlAlt0S
提取方法
提取方法重构允许您使用提取的代码创建命名方法或函数。当调用Extract Method重构时,IntelliJ IDEA 会检测作为所选代码片段的输入的变量以及作为其输出的变量。检测到的输出变量用作提取的方法或函数的返回值。
在下面的示例中,从c = a + b;
表达式中提取了一个函数。
示例 1:从另一个函数内的表达式中提取全局作用域函数
c = a + b;
调用重构的表达式位于函数内部MyFunction()
。选择全局目标范围。
例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()
。选择函数 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);
提取函数
默认打开“提取函数”对话框
打开“设置”对话框 ( ),转至编辑器 | 代码编辑,然后选择“重构”区域中的“在模式对话框中”选项。CtrlAlt0S
提取超类
提取超类重构基于当前类的成员创建一个新的抽象类。创建的类会自动扩展。
笔记
Extract Superclass重构仅在 ES6 代码中可用。有关更多信息,请参阅选择 JavaScript 语言版本。
假设您有一个类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
和字段。Name
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...");
}
}
提取超类
将插入符号放置在要从中提取超类的类中的任意位置。
选择重构 | 摘录| 主菜单或重构中的超类| 从上下文菜单中提取超类。“提取超类”对话框打开。
指定新超类的名称,然后选中要包含在其中的类成员旁边的复选框。(可选)标记要设为抽象的成员。
在“目标文件”字段中,指定新类所在的文件位置。默认情况下,该字段显示调用重构的当前文件的路径。
选择提取超类。IntelliJ IDEA 创建一个新类并用
extends
.要创建超类并将对源类的引用替换为方法参数中对超类的引用,请选择“提取超类并在可能的情况下使用它”。IntelliJ IDEA 在“查找”工具窗口的“重构预览”窗格中显示了建议的更改。
引入对象或数组解构
解构使您可以轻松地将数组和对象中的值解压到变量中。此功能具有非常简洁的语法,当您需要在应用程序中传递数据时经常使用该功能。有关更多信息,请参阅探索 ES6。
在 IntelliJ IDEA 中,您可以使用意图操作调用解构。通过替换为对象/数组解构操作,原始分配将被删除。要保留分配,请使用Introduce object/array destructuring。AltEnter
替换原来的赋值
将插入符号放在数组或对象中的值处,然后按。AltEnter
从列表中,选择用对象解构替换或用数组解构替换。
如果未使用数组或对象中的某些值,则将跳过这些元素:
保留原来的任务
将插入符号放在数组或对象中的值处,然后按。AltEnter
从列表中,选择引入对象解构或引入数组解构。
当使用 React 类组件时,这个意图动作非常方便:
为函数生成解构参数
将插入符号放在函数的参数处,然后按。AltEnter
从列表中选择将参数转换为对象。
提取Vue组件
提取 Vue 组件重构可让您从现有组件中提取新的Vue.js组件,而无需进行任何复制和粘贴。请注意,此重构只能就地进行,因此请确保在“编辑器”|“编辑器中”中选择“在编辑器中重构”选项。IDE 设置的 代码编辑页面。CtrlAlt0S
提取 Vue.js 组件
选择要提取的代码片段并选择Refactor | 从上下文菜单或重构中提取 Vue 组件| 摘录| 从主菜单中提取 Vue 组件。
或者,使用专用意图操作:选择要提取的模板片段,按,然后从列表中选择“提取 Vue 组件” 。有关更多信息,请参阅Vue.js。AltEnter
输入新组件的名称。如果该名称已被使用或无效,IntelliJ IDEA 将显示警告。否则,将创建一个新的单文件组件并将其导入到父组件中。
内联重构
内联重构与提取重构相反。
示例 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;
}
运行内联重构
在编辑器中,将插入符号放在要内联的符号处,然后按或选择Refactor | 从上下文菜单或主菜单内联。CtrlAlt0N
更改签名重构
使用更改签名重构来更改函数名称,添加、删除、重新排序和重命名参数,以及通过调用层次结构传播新参数。
您还可以使用引入参数重构来添加参数。
下面的示例显示了运行更改签名重构的不同方法。在所有情况下,函数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
。新参数以ES6 语言级别或ES5 语言级别的generate_result()
格式初始化。function generate_result(input = 100) {}
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
。新参数以ES6 语言级别或ES5 语言级别的generate_result()
格式初始化。该参数通过调用函数 show_result() 传播,因此函数调用会相应更改。function generate_result(input = 100) {}
input = input || 100
input
function result() {
}
function show_result() {
alert('Result: ' + result());
}
function generate_result(input = 100) {
}
function show_result() {
alert('Result: ' + generate_result());
}
, ,
调用更改签名
在编辑器中,将插入名称符号放在要重构的函数内,然后按或选择Refactor |从上面菜单或主菜单更改签名。将打开“更改签名”对话框。CtrlF6
重命名函数
在“更改签名”对话框中,编辑“名称”字段。CtrlF6
管理功能参数
沿调用层次结构传播参数
在“更改签名”对话框中,选择参数并单击。将打开“选择传播新参数的方法”对话框。上面显示函数调用的层次结构。当您选择一个函数时,同样如此会分别在“调用方方法”和“被调用方方法”字段中显示其代码和它调用的函数的代码。CtrlF6
请参见上面的示例 3。
在左边的中间,选择要传播参数的函数旁边的逗号,然后单击“确定”。
预览更改并完成重建
笔记
要立即执行重构,请单击Refactor。
感谢您的反馈意见!