为什么展开运算符将对象参数转换为一项数组?

"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}]

回答

这不是传播。这些是rest parameters,它们收集传递到单个数组中的所有剩余参数。

这里有一个参数,因此使用 rest 创建一个只包含该参数(恰好是一个对象)的数组。

以下是一些其他示例,可能会更清楚:

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

它只会以单个数组的形式记录所有传递的参数。


以上是为什么展开运算符将对象参数转换为一项数组?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>