Javascript 可选链接和空合并运算符的组合未呈现预期结果

Javascript 可选链接和空合并运算符的组合未呈现预期结果,javascript,methods,optional-chaining,nullish-coalescing,Javascript,Methods,Optional Chaining,Nullish Coalescing,我刚刚了解了可选链和无效合并的组合。 这是对象 const restaurant = { name_: 'Classico Italiano', location: 'Via Angelo Tavanti 23, Firenze, Italy', categories: ['Italian', 'Pizzeria', 'Vegetarian', 'Organic'], starterMenu: ['Focaccia', 'Bruschetta', 'Garlic Bread', 'Caprese

我刚刚了解了可选链无效合并的组合。 这是
对象

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={
名称:'意大利古典',
订购比萨饼(ing1、ing2){
return`您已订购了带有${ing1}和${ing2}的比萨饼`;
}
};
康斯特餐厅2={
名称:'其他',
};
log(restaurant1.orderPizza?('some','something')??“不存在方法”);

log(restaurant2.orderPizza?('some','something')??“不存在方法”)你想打印什么?你到底得到了什么?你到底期望得到什么?我得到了这两个值,而我应该只得到第一个值,如果它存在,或者最后一个值,如果它不存在,“不存在方法”。是的,这解决了问题。但是你在另一种情况下看到,登录控制台工作正常。例如-@Nafi,您能够从函数返回非未定义或空值吗?是。检查JSFIDLE.:)