为啥不能在对象键之后使用 Javascript 扩展运算符?
Posted
技术标签:
【中文标题】为啥不能在对象键之后使用 Javascript 扩展运算符?【英文标题】:Why can't Javascript spread operator be used after object key?为什么不能在对象键之后使用 Javascript 扩展运算符? 【发布时间】:2019-04-13 23:40:02 【问题描述】:我有以下代码:
const array = [
a: 'a',
b: 'b'
];
console.log(...array);
const store =
obj: ...array
console.log
将打印结果就好了。但是,当尝试设置store
的密钥时,我得到了Parsing error: Unexpected token
。
...array
不是分配给store
的obj
键的有效对象吗?
【问题讨论】:
【参考方案1】:...
将数组展开为单个项目。数组可以有超过 1 个元素,因此会有超过 1 个 RHS,这将是无效的。因此,您可以使用obj : ...array
或obj : [...array]
const array = [a: 'a',b: 'b',c: 'c', d: 'd'];
console.log(...array);
const store =
obj: ...array,
obj1: [...array]
;
console.log(store);
【讨论】:
【参考方案2】:spread 语法在对象内部或可迭代内部工作。在您的情况下,您需要在数组中传播元素。
Spread Syntax
扩展语法允许一个可迭代对象,例如一个数组表达式或字符串在需要零个或多个参数(用于函数调用)或元素(用于数组字面量)的地方扩展,或在需要零个或多个键值对(对于对象字面量)的地方扩展的对象表达式。
const array = [0, 1, 2]
const store =
obj: [...array] // <-- the array is being spreded into an array.
console.log(store)
【讨论】:
以上是关于为啥不能在对象键之后使用 Javascript 扩展运算符?的主要内容,如果未能解决你的问题,请参考以下文章
ajax post值到处理页面之后,为啥不能使用header跳转呢