【问题标题】:Spread syntax ES6 with statement使用语句扩展语法 ES6
【发布时间】:2017-12-24 09:03:24
【问题描述】:

我尝试使用扩展语法编写三元运算符并复制两个对象。是否可以在内部使用带有扩展语法的三元运算符和文字对象?我的代码工作正常,我只想优化它。

hintStyle: disabled ? {...globalStyles.hint, ...globalStyles.hintDisabled} : globalStyles.hint,

我想这样写:

hintStyle: {...globalStyles.hint, {disabled ? ...globalStyles.hintDisabled : {}}},

【问题讨论】:

  • 有效吗?如果没有,你会得到错误吗?如果是这样,有什么错误?你问什么问题?
  • 我的第一个代码有效,如何在内部使用带有三元运算符的扩展 es6 运算符。错误是“意外的令牌”
  • {disabled ? ...globalStyles.hintDisabled : {}}之前不需要扩展运算符
  • Rest spread 被转译为 Object.assign 调用,当然可以写成应用条件参数的形式

标签: javascript ecmascript-next spread-syntax


【解决方案1】:

我今天遇到了同样的问题,我的用例很简单,我可以这样做:

// given any-typed parameters a and b, I want to append b to a
// if a is iterable, I want to use spread.
// Initially I had:

const fn1 = (a, b) => [Symbol.iterator in a ? ...a : a, b]

// This was my solution:

const fn2 = (a, b) => Symbol.iterator in a ? [...a, b] : [a, b];

【讨论】:

    【解决方案2】:

    传播is not an operator,它是对象字面量语法的一部分(或者至少在提案被接受时是这样)。你需要写

    {...globalStyles.hint, ...(disabled ? globalStyles.hintDisabled : {})},
    

    【讨论】:

    • 如果您只想在一种情况下传播机器人而不在另一种情况下传播怎么办?可以说字符串与数组是检查。
    • @TheFool 你只能将一个对象传播到一个对象中。如果你有一个不是对象的值,你想如何让它成为对象的一部分?
    • 您可以将一个数组分散到另一个数组中,也可以添加另一个项
    • @TheFool 这个问题不是关于数组的。 是否使用数组展开语法?
    猜你喜欢
    • 1970-01-01
    • 2020-02-24
    • 2023-03-06
    • 1970-01-01
    • 2018-08-01
    • 2017-07-27
    • 2018-05-01
    相关资源
    最近更新 更多