gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 23:19:57 25 4
gpt4 key购买 nike

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

所以在上面的代码中,obj1是一个对象。所以我在函数定义中使用了spread运算符,并在调用函数时给它一个对象。为什么结果是一个包含该输入对象的一项的数组?这里的语法是什么?我在 MDN about spread operator 中没有找到任何解释.请帮我解释一下。

最佳答案

这不是传播。这些是 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)

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

关于javascript - 为什么展开运算符将对象参数转换为一项数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65862554/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com