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是的。