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

标签 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})

因此省略了 ={} 部分。我不确定为什么会这样,如果较短的形式实际上同样正确,那么使用较长形式的优势是什么。

最佳答案

按照您的建议重构函数:

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});

关于javascript - 不清楚 ES6 解构函数参数默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44027585/

相关文章:

javascript - 有什么方法可以声明事件对象而不是在函数的参数中?

javascript - 将键分配给多个对象

javascript - ES6 中的解构

c# - 处理可变数量的输出参数,减少 C# 中的代码重复

java - 是否可以发送音频文件作为请求参数

javascript - 显示本地用户文件并显示内容

javascript - 断言元素不在页面上

javascript - --JSX 似乎无法正确渲染?

javascript - 从 TypeScript 对象中删除动态键

clojure - 解构:这怎么行得通?