应该如何阅读参数列表?参数列表中的语法是什么 - 类似于对象定义但具有相等符号?
Media.configureVideo = function (session, uploadId, caption, durationms, delay, {
audio_muted = false,
trim_type = 0,
source_type = 'camera',
// ...
} = {}) {
// ... Body of the function
PS此存储库中的代码 https://github.com/huttarichard/instagram-private-api
答案 0 :(得分:2)
这是一个函数参数的解构,默认值加上整个参数的默认值,以防它被完全省略
考虑正常的解构:
{ a, b } = objectWithProps;
相当于
a = objectWithProps.a;
b = objectWithProps.b;
您还可以添加默认值:
{ a = 5 } = objectWithPropsMaybe;
相当于
if(objectWithPropsMaybe.a === undefined) {
a = objectWithPropsMaybe.a;
} else {
a = 5;
}
您还可以在函数参数上使用解构来在函数内创建局部变量:
function foo({ a, b }) {
return a + b;
}
foo({ a: 2, b: 3 });
解构可以有默认值:
function foo({ a=0, b=0 }) {
return a + b;
}
foo({ a: 2 });
最后,如果根本没有提供参数,则解构可以有一个后备目标:
function foo({ a=0, b=0 } = {}) {
return a + b;
}
foo();
答案 1 :(得分:1)
代码可以分解为此代码段,其中仅包含奇怪的内容:
const sth = function ( { test = true } = {} ){ }
这就是函数表达式,但它有所谓的默认参数,这意味着如果你没有传递一个值,例如
sth();
这个特殊部分为您填写价值:
= {}
因此,如果你没有传递一个值,那么它就需要一个空对象。现在继续对象解构,举个例子:
const {key} = {key:"value"};
console.log(key) // "value"
因此,对象解构只是将键作为变量移动到上下文中,上层等于:
const key = {key:"value"}.key;
所以现在把它们放在一起:
{
audio_muted = false,
trim_type = 0,
source_type = 'camera',
// ...
} = {}
根据传递对象中具有相同名称的键设置变量 audio_muted 等等,如果未传递,则设置值。