javascript中的语法是什么?

时间:2017-11-03 17:16:35

标签: javascript syntax ecmascript-6

应该如何阅读参数列表?参数列表中的语法是什么 - 类似于对象定义但具有相等符号?

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

2 个答案:

答案 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 等等,如果未传递,则设置值。