换名形参和赋值形参的区别
时间: 2024-05-18 13:16:06 浏览: 204
在函数定义中,形参是用于接收传递给函数的实参的变量。在函数调用时,实参被赋值给形参。在这个过程中,形参有两种不同形式:换名形参和赋值形参。
换名形参是指形参在函数体内部被重新命名,以与函数调用中的实参的名称不同。这种形参被用于避免在函数内部修改传递给函数的实参的值。在函数调用时,实参的值被赋值给换名形参,这个形参在函数内部被使用,而不是实参本身。
赋值形参是指形参在函数体内部保留了与函数调用中实参相同的名称。在函数调用时,实参的值被赋值给赋值形参,这个形参在函数内部被使用。在函数内部,对赋值形参进行的任何修改都会影响传递给函数的实参的值。
因此,换名形参和赋值形参的最大区别在于,后者允许函数内部修改传递给函数的实参的值,而前者则不允许。
相关问题
给es6形参赋值
ES6允许在函数形参中直接进行赋值,这样就可以为形参设置默认值。形参的默认值可以是一个表达式,这个表达式会在函数调用时进行计算,并将结果作为形参的默认值。
例如:
```javascript
function greet(name = 'world') {
console.log('Hello, ' + name + '!');
}
greet(); // 输出 "Hello, world!"
greet('John'); // 输出 "Hello, John!"
```
在上面的例子中,函数 `greet` 接受一个名为 `name` 的形参,并为它设置了默认值 `'world'`。在函数调用时,如果没有传递 `name` 参数,则使用默认值 `'world'`;如果传递了 `name` 参数,则使用传递的值。
)定义一个Person类,含有姓名 (String类型,名name) 、性别 (String类型,名gender)、年龄(类型int,age) 等属性 定义无参构造器,每次无参构造器被调用会在控制台打印”创建一个人。 定义有参构造器,构造器有String类型的形参nameString类型的形参gender和int类型的形参age,调用此构造器的对象,其姓名属性会被name形参赋值,性别属性会被gender形参赋值,年龄属性会被age形参赋值。定义一个Student类,继承Person类,有String类型的属性ID和int类型的属性classes。 定义无参构造器,每次无参构造器被调用会在控制台打印"创建一名学生。 定义有参构造器,构造器有String类型的形参name,String类型的形参gender,int类型的形参age,String类型的形参ID和int类型的形参classes,调用此构造器首先会使用name、gender和age三个形参通过super关键字调用父类构造器赋值,再利用形参和this关键字为此对象的ID届属性和 classes届性赋值。
```
public class Person {
private String name;
private String gender;
private int age;
public Person() {
System.out.println("创建一个人。");
}
public Person(String name, String gender, int age) {
this.name = name;
this.gender = gender;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
public class Student extends Person {
private String ID;
private int classes;
public Student() {
super();
System.out.println("创建一名学生。");
}
public Student(String name, String gender, int age, String ID, int classes) {
super(name, gender, age);
this.ID = ID;
this.classes = classes;
}
public String getID() {
return ID;
}
public void setID(String ID) {
this.ID = ID;
}
public int getClasses() {
return classes;
}
public void setClasses(int classes) {
this.classes = classes;
}
}
```
阅读全文