不清楚ES6解构函数参数默认值

时间:2017-05-17 14:23:21

标签: javascript ecmascript-6 destructuring

因此,在用于解构函数默认值的MDN文档中,它给出了以下示例。

function drawES2015Chart({size = 'big', cords = {x: 0, y: 0}, radius = 
25} = {}) {
  console.log(size, cords, radius);
  // do some chart drawing
}

drawES2015Chart({
  cords: {x: 18, y: 30},
  radius: 30
});

但是,我可以将第一行作为function drawES2015Chart({size = 'big', cords = {x: 0, y: 0}, radius = 25})

运行此示例

所以遗漏了={}部分。我不确定为什么这样做有效,如果较短的形式实际上同样正确的话,使用较长的形式有什么好处。

3 个答案:

答案 0 :(得分:4)

最后的= {}默认整个参数对象,以确保如果有人在没有任何参数的情况下调用您的函数,undefined vs drawES2015Chart({}) {1}})

如果你没有这个警卫:

drawES2015Chart()

答案 1 :(得分:4)

按照建议重构功能:

function drawES2015Chart({size = 'big', cords = {x: 0, y: 0}, radius = 25}) {
    console.log(size, cords, radius);
}

尝试不带参数调用时会导致错误:

drawES2015Chart(); // throws TypeError

但是,您可以将其命名为:

drawES2015Chart({});

那么,= {}最后做的是让你能够调用

drawES2015Chart();

将默认为

drawES2015Chart({});

将默认为

drawES2015Chart({size = 'big', cords = {x: 0, y: 0}, radius = 25});

答案 2 :(得分:0)

尝试删除 = {} 并执行drawES2015Chart();

它可以防止 undefined 被解构。