因此,在用于解构函数默认值的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})
所以遗漏了={}
部分。我不确定为什么这样做有效,如果较短的形式实际上同样正确的话,使用较长的形式有什么好处。
答案 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 被解构。