代码之家  ›  专栏  ›  技术社区  ›  Tuomas Toivonen

javascript(es6):在条件表达式(?-操作员[副本]

  •  1
  • Tuomas Toivonen  · 技术社区  · 7 年前

    这个问题已经有了答案:

    在javascript中,可以使用 ... (排列)运算符如下

    [...[1,2,3], ...[4,5,6]]
    // -> [1, 2, 3, 4, 5, 6]
    

    然而,似乎没有资格在三元内部使用扩散运算符。 ? 表达

    [true ? ...[1,2,3] : ...[4,5,6]]
    // Uncaught SyntaxError: Unexpected token ...
    

    这是一种合理的语言限制,一种缺陷,还是我遗漏了什么?在没有命令式方法或 Object.assign() 功能?

    1 回复  |  直到 7 年前
        1
  •  5
  •   Nina Scholz    7 年前

    将点移动到表达式之外,并使用结果执行展开。

    console.log([...(true ? [1, 2, 3] : [4, 5, 6])]);

    这只适用于可传播的价值观。否则,将不可展开的部分包装成一个数组。

    console.log([...(true ? [1] : [4, 5, 6])]);