Skip to content

下面的输出是什么?

javascript
const person = {
	firstName: "Lydia",
	lastName: "Hallie",
	pet: {
		name: "Mara",
		breed: "Dutch Tulip Hound"
	},
	getFullName() {
		return `${this.firstName} ${this.lastName}`;
	}
};

console.log(person.pet?.name);
console.log(person.pet?.family?.name);
console.log(person.getFullName?.());
console.log(person.getLastName?.());

A. undefined undefined undefined undefined B. Mara undefined Lydia Hallie undefined C. Mara null Lydia Hallie null D. null ReferenceError null ReferenceError

答案: B

解析:

通过逐行分析代码来看输出结果:

  1. console.log(person.pet?.name);

    • 这一行代码打印了person.pet.name的值,如果该值存在且不为nullundefined,则输出该值。
    • 在这种情况下,person.pet.name的值为"Mara",因此输出将是"Mara"
  2. console.log(person.pet?.family?.name);

    • 这一行代码试图访问person.pet.family.name的值,但是由于使用了?.,即使person.pet.family不存在(为nullundefined),也不会抛出错误,而是返回undefined
    • 因此,输出将是undefined
  3. console.log(person.getFullName?.());

    • 这一行代码调用person.getFullName()方法(如果存在)并输出其返回值。
    • 在这种情况下,getFullName方法存在,它会返回"Lydia Hallie",因此输出将是"Lydia Hallie"
  4. console.log(person.getLastName?.());

    • 这一行代码试图调用一个名为getLastName的方法(如果存在),但是person对象中并不存在getLastName方法,所以它将返回undefined
    • 因此,输出将是undefined