下面的输出是什么?
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
解析:
通过逐行分析代码来看输出结果:
console.log(person.pet?.name);- 这一行代码打印了
person.pet.name的值,如果该值存在且不为null或undefined,则输出该值。 - 在这种情况下,
person.pet.name的值为"Mara",因此输出将是"Mara"。
- 这一行代码打印了
console.log(person.pet?.family?.name);- 这一行代码试图访问
person.pet.family.name的值,但是由于使用了?.,即使person.pet.family不存在(为null或undefined),也不会抛出错误,而是返回undefined。 - 因此,输出将是
undefined。
- 这一行代码试图访问
console.log(person.getFullName?.());- 这一行代码调用
person.getFullName()方法(如果存在)并输出其返回值。 - 在这种情况下,
getFullName方法存在,它会返回"Lydia Hallie",因此输出将是"Lydia Hallie"。
- 这一行代码调用
console.log(person.getLastName?.());- 这一行代码试图调用一个名为
getLastName的方法(如果存在),但是person对象中并不存在getLastName方法,所以它将返回undefined。 - 因此,输出将是
undefined。
- 这一行代码试图调用一个名为