【问题标题】:Javascript Spread Operator used with return与返回一起使用的 Javascript 扩展运算符
【发布时间】:2021-12-29 17:27:39
【问题描述】:

我对如何在这里使用展开运算符感到困惑。我对扩展运算符的工作原理有基本的了解,但我对扩展运算符所指的内容、使用方式以及提供的内容感到困惑。 “userCanDecline” const 是从上述调用中检索到的布尔值。如果我能提供更多关于我所分享内容的信息,请告诉我。

return [
                ...(userCanDecline
                    ? [
                          {
                              label: 'Decline Draw',
                              icon: 'ban',
                              action: () => (el, ev) => {
                                  Service.decline(this.onCloseView);
                              },
                          },
                      ]
                    : [])

【问题讨论】:

  • 真的没有理由。应该写成return userCanDecline ? [{}] : [];
  • 没有传播算子,有spread syntax。
  • 您有一个返回数组的 return 语句。然后它内部的扩展语法允许您执行检查,如果userCanDecline 评估为真,则返回另一个对象数组,否则返回一个空数组。 ? 和 : 称为条件(三元)运算符。 (userCanDecline.....) 周围的圆括号也不是必需的。
  • 扩展语法只是简单地复制条件运算符返回的数组。但是没有必要复制新创建的数组。
  • 我会说这段代码是由一个不知道自己在做什么的人编写的。这不是一个很好的例子。

标签: javascript syntax spread


【解决方案1】:

当对象或数组中的所有元素都需要包含在某种列表中时,可以使用扩展语法。

let arr1 = [0, 1, 2];
let arr2 = [3, 4, 5];
arr1 = [...arr1, ...arr2];

在您的问题中,发生的情况是,检查 userCanDeclined 的值是否为真,如果是,则返回一个数组,其中分布了下面的数组(其值复制到新返回的数组中)

 [
  { 
    label: 'Decline Draw',
    icon: 'ban',
    action: () => (el, ev) => {
           Service.decline(this.onCloseView);
        },
   }
  ]

否则,如果为假,则展开或复制一个空数组

  []

【讨论】:

  • 这个答案比帖子上留下的 cmets 更有意义。我并不是说他们错了,但是在尝试删除“...”和他们建议的其他一些语法之后,文件没有返回预期的内容。
猜你喜欢
  • 2020-10-21
  • 2019-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-29
  • 1970-01-01
  • 2016-05-03
  • 2022-01-01
相关资源
最近更新 更多