ES6中参数的默认值

Jen*_*Mok 8 javascript ecmascript-6

这是es6中参数的默认值吗?

function list({ skip = 0, limit = 50 } = {}) {

}
Run Code Online (Sandbox Code Playgroud)

上面的代码是做什么的?

如果这是list(skip=0, limit=50)我能理解但现在我很困惑.

nem*_*035 9

该函数将解构默认参数混合在一起.

基于函数签名,我们可以说我们期待一个参数,它应该是一个对象.

function list(myObject) {

}
Run Code Online (Sandbox Code Playgroud)

如果没有传递(或undefined传递)参数,我们将默认值设置为空对象,{}.

function list(myObject = {}) {

}
Run Code Online (Sandbox Code Playgroud)

现在,无论如果我们传递一个对象,没有参数,或者undefined,myObject将是一个对象.

// myObject will be {} for all 3 calls
list({})
list()
list(undefined);
Run Code Online (Sandbox Code Playgroud)

接下来,我们myObject通过从中提取skiplimit对其进行解构:

function list(myObject = {}) {
  let { skip, limit } = myObject;
}
Run Code Online (Sandbox Code Playgroud)

此外,我们可以直接执行此解构而不是myObject参数:

function list({ skip, limit } = {}) {

}
Run Code Online (Sandbox Code Playgroud)

最后,如果我们最终得到的值存在skiplimit不存在,我们给它们默认值:

function list({ skip = 0, limit = 50 } = {}) {

}
Run Code Online (Sandbox Code Playgroud)