对象的扩展运算符(...
)无法正常工作,如下面的代码所示。这是预期的行为吗?
在jsbin
//var test ={start:'stating',end: 'ending'}; //its not working
var test=['start-value','end-value']; //its working
function display(start,end){
console.log(start,end);
}
display(...test)
提出这个问题背后的原因是,我在下面的代码行中看到了使用扩展运算符的对象,但它对我不起作用。
我是否缺少任何配置才能使其正常工作?
答案 0 :(得分:4)
来自文档:
Only for iterables
Note that the spread operator can be applied only to iterable objects:
var obj = {'key1': 'value1'};
var array = [...obj]; // TypeError: obj is not iterable
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_operator
答案 1 :(得分:2)
我猜你期待从对象中获取正确的值作为函数参数。您可以使用扩展运算符,但首先必须将对象交换为可迭代的对象,例如array
。
var test = {
start: 'stating',
end: 'ending'
}
function display(start, end) {
console.log(start, end);
}
display(...Object.keys(test).map(v => test[v]));