Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
189 views
in Technique[技术] by (71.8m points)

javascript - Why spread operator converts object param to one item array?

"use strict";
let obj1 = { foo: 'bar', x: 42 };
function abc(...aaa) {
    console.log(aaa);
}
abc(obj1)
// log result: [{foo: 'bar', x: 42}]

"use strict";
let obj1 = { foo: 'bar', x: 42 };
function abc(...aaa) {
    console.log(aaa);
}
abc(obj1)
// log result: [{foo: 'bar', x: 42}]
question from:https://stackoverflow.com/questions/65862554/why-spread-operator-converts-object-param-to-one-item-array

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

This is not spread. These are rest parameters, which collect all remaining arguments passed into a single array.

Here, there's one argument, so using rest creates an array containing just that one argument (which happens to be an object).

Here are a couple other examples that might make it clearer:

function abc(...aaa) {
    console.log(aaa);
}
abc(5, 5, 5, 5, 5)
abc(3, 1, 2, 5)
abc(1, 2, 3)
abc(0)

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...