【问题标题】:Functions returning an object with the same attributes doesn't work [duplicate]返回具有相同属性的对象的函数不起作用[重复]
【发布时间】:2021-10-21 06:54:30
【问题描述】:

所以我的问题如下:
我有两个功能
getDatesAndStringOfTimespan(timeSpan, goBack) 返回 {from, to}
limitFromAndTo(from, to, fromLimit, toLimit) 返回 {from, to}

我现在想做以下事情:
let { from, to } = getDatesAndStringOfTimespan(timeSpan, goBack)
{ from, to } = limitFromAndTo(from, to, fromLimit, toLimit)

但它显示“需要声明或声明”。我知道我可以做到
let { from, to } = getDatesAndStringOfTimespan(timeSpan, goBack)
let object = limitFromAndTo(from, to, fromLimit, toLimit)
from = object.from
to = object.to

似乎有一种更聪明的方法可以做到这一点。

【问题讨论】:

标签: javascript object javascript-objects


【解决方案1】:

我可以看到其他两种方法。

  1. 将第二个赋值括在括号中,以帮助 js 编译器了解正在发生的事情(我不建议这样做,只是让您的实现在实践中成为可能)
let { from, to } = getDatesAndStringOfTimespan(timeSpan, goBack);
({ from, to } = limitFromAndTo(from, to, fromLimit, toLimit))
  1. 仅解构第二个值
const dates = getDatesAndStringOfTimespan(timeSpan, goBack)
const { from, to } = limitFromAndTo(dates.from, dates.to, fromLimit, toLimit)

我更喜欢代码审查中的#2,因为它更清楚地看到发生了什么 - 没有魔术括号,并且更具可读性

【讨论】:

  • 非常感谢!!在这种情况下,我会选择第二个选项,但这不时出现在我的代码中,有时我可能会考虑第一个选项。从来没有真正学过 Javascript,只是简单的 Java :/
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-25
相关资源
最近更新 更多