老师,问题请看注释

老师,问题请看注释

//在调用时给实参name:3

function People2({name,age = 38} = { name :1}){  //age=38是解构赋值时的默认值吗?name:1也是是要解构的对象的默认值?那如果等号右边的花括号里面也有age=20的话,调用函数时没有传入实参,是等号哪边的默认参数值生效呢?

console.log(name,age);  //3 38

}

People2({name:3});


正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,可以这样理解:

左侧定义的是对象是参数,里面定义的name,age相当于一个变量,那么变量赋值使用的是等号。而右侧是参数的值,那么这个值是一个对象,对象中的属性和属性值本身就需要使用冒号隔开。这就和我们平时定义对象一样,例如如下:

http://img1.sycdn.imooc.com//climg/5ee974d7097d945301780104.jpg

当为这个对象解构赋值时,左侧对象中,定义的是变量,变量设置值就是用等号。

http://img1.sycdn.imooc.com//climg/5ee9750109a609cb02690048.jpg

但是你把对象中属性值和属性名使用等号隔开,语法就不对了:

如下语法不对

http://img1.sycdn.imooc.com//climg/5ee9753609ff6dc102260098.jpg

其他的地方没有了,理解了这一块就行。

祝学习愉快~

好帮手慕夭夭 2020-06-16 10:18:03

同学你好,理解的都正确。另外,最后一个疑问,是可以通过自己动手测试解决的。在学习时,遇到问题,一定要去测试,提升自己的动手实战能力和独立解决问题的能力,这会对自己是一个很大的提升哦。以下是测试代码,建议同学自己也去测试一下:

http://img1.sycdn.imooc.com//climg/5ee82b64093d3cb006040100.jpg

注意左侧是单独给某一个属性赋值,所以使用了等号,但是右侧是一个对象,整个对象是默认值,所以对象中的属性与属性值是用冒号隔开的。测试结果如下:

http://img1.sycdn.imooc.com//climg/5ee82baa0900750202010035.jpg

如果整个参数,即这个对象设置了默认值,那么生效的就是右侧的值。

如果我的回答帮到了你,欢迎采纳,祝学习愉快~


  • 提问者 hyperse #1
    谢谢老师,我才发现左边是等号,右边是冒号。那这两个都是设置的默认值,为什么符号又不一样呢?是不是还是有哪里不一样呀,等号左边和右边设置的默认值,只是写法不同吗
    2020-06-16 23:18:50
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师