javascript - 解构函数参数子属性

标签 javascript ecmascript-6

我有一个函数,我希望能够以两种方式调用它 - 并且它的行为应该相同。

是否有 ES6 语法允许我使用两种方式调用下面的函数 doBar 并获得相同的结果?

考虑这样的函数:

const doBar = ({ foo = 'bar' }) => {
  console.log(foo) // should log 'baz'
}

我正在使用一个绑定(bind)事件的框架,如下所示:

<x-component on-some-event="doBar"></x-component>

这基本上会导致像这样的调用:

// where e = { detail: { foo: 'baz' } }
doBar(e)

..但我希望能够显式地调用我的函数,尽管使用正确的调用签名,如下所示:

doBar({ foo: 'baz' })

最佳答案

您可以使用 default parameter 。如果未找到 foo,它将使用 detail.foo 的值。

const doBar = ({ detail = {}, foo = detail.foo }) => {
  console.log(foo) // should log 'baz'
}

doBar({ foo: 'baz' })


doBar({
  detail: {
    foo: 'baz'
  }
});

关于javascript - 解构函数参数子属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47461381/

相关文章:

javascript - 如何删除Javascript创建的类?

javascript - 带有物体的粗箭头

javascript - 在 JavaScript 中创建数组并用索引加一填充

javascript - 旨在返回数组的函数返回未定义。函数内的 Console.log(array) 返回数组

JavaScript - 删除 </html> 标签后的所有内容

javascript - 我的计数器变量对并发任务安全吗?

javascript - React Express 集成

javascript - 需要多次使用 getElementById 来更改图像 src

javascript - 当循环在异步函数内部而不是相反时,为什么 Async/Await 可以正常工作?

javascript - 如何在 Ember 中的同一组件上编辑待办事项任务