我正在试着学习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
如果有人能澄清这一点,我将不胜感激
在示例1中,drawchart({size:7,radiation:4})
将单个对象参数传递给drawchart()
函数。 但是,您已经声明drawchart()
接受2个参数。 这意味着在函数中,size
参数将等于{size:7,radies:4}
,而radies
参数采用其默认值25
。
在示例2中,您将drawchart()
定义为只接受一个作为对象的参数,并从该对象中使用析构来获取size
和radiation
属性。
要使示例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});
对于您的第一个函数,如下所示:-
size
和radiation
函数参数都是string
和number
类型的主元,默认值为big
和25
。
现在调用drawchart({size:7,radies:4})
,它实际上将函数参数size
设置为等于{size:7,radies:4}
,并且radies
没有设置为任何值,而是保存默认值25
。
因此输出为
{
"size": 7,
"radius": 4
} 25
对于您的第二个函数:-您实际上已经在这里为您的函数参数使用了析构。 这里只传入一个参数,即对象{size:7,radiation:4}
。 因此,在运行时,将默认值为big
的size
设置为7
,将默认值为25
的radiation
设置为4
。
因此输出为
7 4
我希望这是有意义的。
我想你要找的是这样的:
function drawChart(props) {
const { size, radius } = props;
console.log(size, radius);
}