Skip to content

下面的输出是什么?

Posted on:2024年8月3日 at 21:05
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?.());

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

  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
原文转自:https://fe.ecool.fun/topic/289617b6-a28f-4528-be36-ac9e08e9d2c1