ES6中的命名对象参数-如何检查它们是否提供?

基思·杰克逊

我有一些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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章