【发布时间】:2018-07-24 18:58:43
【问题描述】:
我正在根据http://2ality.com/2017/04/conditional-literal-entries.htmlhttp://2ality.com/2017/04/conditional-literal-entries.html 中所述的条件将元素推送到数组中
const arr = [
...(cond ? ['a'] : []),
'b',
];
现在,这很好,但是当我尝试时
const arr = [
...(cond && ['a']),
'b',
];
相反,它停止工作。
我想知道为什么它不再工作了,以及是否有办法使用扩展运算符和 && 而不是?。
谢谢
【问题讨论】:
-
请加上
cond的值。 -
在第二个示例中,如果
cond的计算结果为 false,则表达式的计算结果为false,您最终会得到...false而不是...[],因此会引发错误。 -
@NinaScholz cond 是一个条件,因此可能为真或假
-
@Miguel 在我用来测试特别是它的情况下它评估为真,并且它不会将“a”添加到数组中。不管怎样,你知道要解决这个问题吗?
-
@user3808307 你可以在控制台中尝试:
[...(true && ['a'])]给出['a']但[...(false && ['a'])]产生TypeError。
标签: javascript arrays spread-syntax