我有一些ES6代码,我在其中传递了已定义的选项对象的某些命名参数,例如...
configureMapManager({ mapLocation, configuredWithDataCallback, locationHasChanged })
{
if (mapLocation) console.log(mapLocation)
}
这是人为的情况,以下调用将正常工作...
configureMapManager({ mapLocation: "BS1 3TQ" })
configureMapManager({})
但这会炸毁...
configureMapManager()
...因为我无法检查传入的对象是否已定义(不是因为我没有任何参数就调用了该方法)。我该怎么做而不必像这样重写它(这很烂,因为那样您会丢失对象内允许的参数的可见性)...
configureMapManager(options)
{
if (options && options.mapLocation) console.log(mapLocation)
}
最佳答案
使用默认参数:
function configureMapManager({ mapLocation } = {})
{
console.log(mapLocation);
}
当不带任何参数调用函数时,
mapLocation
将是未定义的:configureMapManager(); // prints: undefined
configureMapManager({ mapLocation: 'data' }); // prints: data