提问者:小点点

打印两个值而不破坏


我正在试着学习javascript析构,结果被卡住了,没有发现类似的东西,所以我问是否有人能给我一些启发。 我有两个问题:1,这里我在论证中有结构化的问题(它是结构化的吗?) 上面我有一个函数,没有结构化,它打印{size:7,radius:4}25,我的问题是为什么它也打印25? 就像现在它已经打印了两个“radius”,难道它不应该只打印一个“radius(4)”吗?

null

function drawChart(size = 'big', radius = 25 ) {
  console.log(size, radius);
} 
 
drawChart({size:7, radius:4} );

null

2:现在我在函数里面放了花括号,在参数里面也有花括号(哪一个是destructing(对象destructing?),两者都是,还是就在上面?),它打印'74',现在这里不是25,为什么?

null

function drawChart({ size = 'big', radius = 25 } ) {
  console.log(size, radius);
} 
 
drawChart({size:7, radius:4} );

null

如果有人能澄清这一点,我将不胜感激


共3个答案

匿名用户

在示例1中,drawchart({size:7,radiation:4})将单个对象参数传递给drawchart()函数。 但是,您已经声明drawchart()接受2个参数。 这意味着在函数中,size参数将等于{size:7,radies:4},而radies参数采用其默认值25

在示例2中,您将drawchart()定义为只接受一个作为对象的参数,并从该对象中使用析构来获取sizeradiation属性。

要使示例1像示例2一样工作而不使用花括号,可以让drawchart()接受单个对象,然后访问该对象的属性。

null

function drawChart(data) {
  console.log(data.size || 'big', data.radius || '25');
} 
 
drawChart({size:7, radius:4});
drawChart({size:7});
drawChart({radius:4});

匿名用户

对于您的第一个函数,如下所示:-

sizeradiation函数参数都是stringnumber类型的主元,默认值为big25

现在调用drawchart({size:7,radies:4}),它实际上将函数参数size设置为等于{size:7,radies:4},并且radies没有设置为任何值,而是保存默认值25

因此输出为

{
  "size": 7,
  "radius": 4
} 25

对于您的第二个函数:-您实际上已经在这里为您的函数参数使用了析构。 这里只传入一个参数,即对象{size:7,radiation:4}。 因此,在运行时,将默认值为bigsize设置为7,将默认值为25radiation设置为4

因此输出为

7 4

我希望这是有意义的。

匿名用户

我想你要找的是这样的:

function drawChart(props) {
  const { size, radius } = props;
  console.log(size, radius);
}