老师,问题请看注释
来源:5-1 函数扩展之默认参数
hyperse
2020-06-16 01:16:32
//在调用时给实参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相当于一个变量,那么变量赋值使用的是等号。而右侧是参数的值,那么这个值是一个对象,对象中的属性和属性值本身就需要使用冒号隔开。这就和我们平时定义对象一样,例如如下:
当为这个对象解构赋值时,左侧对象中,定义的是变量,变量设置值就是用等号。
但是你把对象中属性值和属性名使用等号隔开,语法就不对了:
如下语法不对
其他的地方没有了,理解了这一块就行。
祝学习愉快~
好帮手慕夭夭
2020-06-16
同学你好,理解的都正确。另外,最后一个疑问,是可以通过自己动手测试解决的。在学习时,遇到问题,一定要去测试,提升自己的动手实战能力和独立解决问题的能力,这会对自己是一个很大的提升哦。以下是测试代码,建议同学自己也去测试一下:
注意左侧是单独给某一个属性赋值,所以使用了等号,但是右侧是一个对象,整个对象是默认值,所以对象中的属性与属性值是用冒号隔开的。测试结果如下:
如果整个参数,即这个对象设置了默认值,那么生效的就是右侧的值。
如果我的回答帮到了你,欢迎采纳,祝学习愉快~
相似问题