function getPersonInfo(one,two,three){ console.log(one); console.log(two); console.log(three); } const person ='Lydia' const age=21; getPersonInfo `${person} is ${age} years old` 输出什么?为什么?原理是什么?
时间: 2024-02-14 16:12:06 浏览: 20
这段代码会输出以下内容:
```
[ 'Lydia is ', ' years old' ]
Lydia
21
```
这是因为模板字符串`${person} is ${age} years old`实际上是一个标记模板字面量,它由一个函数名和一个字符串参数组成,例如`getPersonInfo`${person} is ${age} years old``。当 JavaScript 解析到这个模板字面量时,它会自动将其转换为函数调用,即`getPersonInfo([ 'Lydia is ', ' years old' ], Lydia, 21)`。
在这个函数中,`one`、`two`、`three`分别对应模板字面量中的三个部分:`'Lydia is '`、`' years old'`和 `${age}`。因此,`console.log(one)`输出的是一个数组`['Lydia is ', '']`,`console.log(two)`输出的是`Lydia`,`console.log(three)`输出的是`21`。
这种用法可以让我们在模板字符串中自由地插入变量,同时也可以对这些变量进行处理和格式化。
相关问题
展示一个return多个值的例子
当你需要返回多个值时,你可以使用数组或对象来封装这些值。以下是一个使用数组封装多个返回值的示例:
```javascript
function getPersonInfo() {
var name = "John";
var age = 30;
var occupation = "Developer";
return [name, age, occupation];
}
var personInfo = getPersonInfo();
console.log(personInfo[0]); // 输出:John
console.log(personInfo[1]); // 输出:30
console.log(personInfo[2]); // 输出:Developer
```
在上面的例子中,`getPersonInfo` 函数返回一个包含姓名、年龄和职业的数组。你可以通过索引来访问数组中的每个返回值。
另一种方式是使用对象来封装多个返回值,如下所示:
```javascript
function getPersonInfo() {
var name = "John";
var age = 30;
var occupation = "Developer";
return { name, age, occupation };
}
var personInfo = getPersonInfo();
console.log(personInfo.name); // 输出:John
console.log(personInfo.age); // 输出:30
console.log(personInfo.occupation); // 输出:Developer
```
在这种情况下,`getPersonInfo` 函数返回一个包含姓名、年龄和职业的对象。你可以使用对象的属性来访问每个返回值。
无论是使用数组还是对象,都可以方便地返回和访问多个值。选择使用哪种方式取决于你的需求和个人偏好。
设计一个java程序,如下:1 Person类(抽象类): 属性:int id, String name, LocalDate birthDate。 方法:构造方法(id, name, year, month, dayOfMonth); id与birthDate的getter方法; name的getter/setter方法; 抽象方法String getPersonInfo(),该方法之所以声明为抽象是因为其在子类返回的信息与子类特有属性相关。 Student类继承自Person类: 属性:int enrollmentYear, String clazzName。 方法:构造方法(id, name, year, month, dayOfMonth, enrollmentYear, clazzName),建议使用super复用Person的构造方法; 覆盖父类的 getPersonInfo()方法,返回"Student-enrollmentYear-name" Teacher类继承自Person: 属性:String department, double salary。 方法:构造方法(id, name, year, month, dayOfMonth, department, salary),建议使用super复用Person的构造方法; 覆盖父类的 getPersonInfo()方法,返回"Teacher-department-name" main方法包含: 输入 : 产生n个对象 如果要生成Student对象则依次输入:姓名 年 月 日 入学年份 班级 如果要生成Teacher对象则依次输入:姓名 年 月 日 系 薪水 输出 : 学生人数,教师人数 n个对象getPersonNumber 输入样例: 6 Liz 1986 10 10 CS 2000 Tom 1978 5 7 CS 2500.5 Sally 2000 1 3 2018 Net01 Jerry 1988 6 7 Mechanical 1990 Eliza 2001 2 5 2019 Software02 Li 1978 5 7 cs 2400 输出样例: Teacher 4人 Student 2人 Teacher-CS-Liz Teacher-CS-Tom Student-2018-Sally Teacher-Mechanical-Jerry Student-2019-Eliza Teacher-cs-Li
以下是Java代码实现:
```java
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
ArrayList<Person> persons = new ArrayList<>();
System.out.print("请输入对象的个数:");
int n = scanner.nextInt();
scanner.nextLine();
for (int i = 0; i < n; i++) {
System.out.print("请输入对象类型(1为学生,2为教师):");
int type = scanner.nextInt();
scanner.nextLine();
System.out.print("请输入姓名:");
String name = scanner.nextLine();
System.out.print("请输入出生年份:");
int year = scanner.nextInt();
System.out.print("请输入出生月份:");
int month = scanner.nextInt();
System.out.print("请输入出生日:");
int dayOfMonth = scanner.nextInt();
if (type == 1) {
System.out.print("请输入入学年份:");
int enrollmentYear = scanner.nextInt();
System.out.print("请输入班级名称:");
String clazzName = scanner.next();
persons.add(new Student(name, year, month, dayOfMonth, enrollmentYear, clazzName));
} else if (type == 2) {
System.out.print("请输入系别名称:");
String department = scanner.next();
System.out.print("请输入薪水:");
double salary = scanner.nextDouble();
persons.add(new Teacher(name, year, month, dayOfMonth, department, salary));
}
}
int studentCount = 0;
int teacherCount = 0;
for (Person person : persons) {
if (person instanceof Student) {
studentCount++;
} else if (person instanceof Teacher) {
teacherCount++;
}
System.out.println(person.getPersonInfo());
}
System.out.println("学生人数:" + studentCount);
System.out.println("教师人数:" + teacherCount);
}
}
abstract class Person {
protected int id;
protected String name;
protected LocalDate birthDate;
public Person(int id, String name, int year, int month, int dayOfMonth) {
this.id = id;
this.name = name;
this.birthDate = LocalDate.of(year, month, dayOfMonth);
}
public int getId() {
return id;
}
public LocalDate getBirthDate() {
return birthDate;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public abstract String getPersonInfo();
}
class Student extends Person {
private int enrollmentYear;
private String clazzName;
public Student(String name, int year, int month, int dayOfMonth, int enrollmentYear, String clazzName) {
super(0, name, year, month, dayOfMonth);
this.enrollmentYear = enrollmentYear;
this.clazzName = clazzName;
}
@Override
public String getPersonInfo() {
return "Student-" + enrollmentYear + "-" + name;
}
}
class Teacher extends Person {
private String department;
private double salary;
public Teacher(String name, int year, int month, int dayOfMonth, String department, double salary) {
super(0, name, year, month, dayOfMonth);
this.department = department;
this.salary = salary;
}
@Override
public String getPersonInfo() {
return "Teacher-" + department + "-" + name;
}
}
```