javascript的语法是什么?

javascript的语法是什么?,javascript,syntax,ecmascript-6,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 从该存储库中删除代码 这是一个函数

如何读取参数列表?参数中的语法列出了什么-类似于对象定义但带有等号的语法

Media.configureVideo = function (session, uploadId, caption, durationms, delay, {
  audio_muted = false,
  trim_type = 0,
  source_type = 'camera',
 // ...
} = {}) {
 // ... Body of the function
从该存储库中删除代码

这是一个函数参数,带有默认值,加上整个参数的默认值,以防完全忽略

考虑正常的分解:

{ a, b } = objectWithProps;
这相当于

a = objectWithProps.a;
b = objectWithProps.b;
if(objectWithPropsMaybe.a === undefined) {
    a = objectWithPropsMaybe.a;
} else {
    a = 5;
}
您还可以添加默认值:

{ a = 5 } = objectWithPropsMaybe;
function foo({ a=0, b=0 }) {
    return a + b;
}

foo({ a: 2 });
这相当于

a = objectWithProps.a;
b = objectWithProps.b;
if(objectWithPropsMaybe.a === undefined) {
    a = objectWithPropsMaybe.a;
} else {
    a = 5;
}
您还可以对函数参数使用反结构来创建函数内部的局部变量:

function foo({ a, b }) {
    return a + b;
}

foo({ a: 2, b: 3 });
并且分解可以有默认值:

{ a = 5 } = objectWithPropsMaybe;
function foo({ a=0, b=0 }) {
    return a + b;
}

foo({ a: 2 });
最后,如果根本没有提供参数,则分解可以有一个回退目标:

function foo({ a=0, b=0 } = {}) {
    return a + b;
}

foo();

代码可以分解为以下代码段,其中只包含奇怪的内容:

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

您有问题吗?这些代码行中有很多语法。你不明白哪一点?如果你问如何声明一个JavaScript对象,你真的需要一个。编辑这个问题。这是一个默认值的对象分解。谢谢!是es6语法吗?@juriy是的。