OPTIONAL CHAINING 和 NULLISH COALESING 运算符的组合未呈现预期结果

问题描述

我刚刚了解了 Optional chainNullish 合并 的组合。 这是object

const restaurant = {
name_: 'Classico Italiano',location: 'Via Angelo Tavanti 23,Firenze,Italy',categories: ['Italian','Pizzeria','vegetarian','Organic'],starterMenu: ['Focaccia','Bruschetta','Garlic Bread','Caprese Salad'],mainMenu: ['Pizza','Pasta','Risotto'],openingHours: {
    thu: {
        open: 12,close: 22,},fri: {
        open: 11,close: 23,sat: {
        open: 0,// Open 24 hours
        close: 24,orderPizza(ing1,ing2) {
    console.log(`you have ordered your pizza with ${ing1} and ${ing2}`);
}};

当我试图检查该方法是否存在时,它无论如何都会打印出它们。我做错了什么?

console.log(restaurant.orderPizza?.('some','something') ?? 'no method exist');

解决方法

也许从函数返回一个值,否则它有一个未定义的值:

const restaurant1 = {
  name_: 'Classico Italiano',orderPizza(ing1,ing2) {
    return `you have ordered your pizza with ${ing1} and ${ing2}`;
  }
};

const restaurant2 = {
  name_: 'Other',};

console.log(restaurant1.orderPizza?.('some','something') ?? 'no method exist');
console.log(restaurant2.orderPizza?.('some','something') ?? 'no method exist');