函数参数的默认值与解构赋值的默认值

参数默认值可以与解构赋值的默认值,结合起来使用。

function foo({x, y = 5}) { //这里定义了一个函数,参数为一个{}对象,没有默认值,只有解构赋值参数的默认值
  console.log(x, y);
}

foo({}) // undefined 5
foo({x: 1}) // 1 5
foo({x: 1, y: 2}) // 1 2
foo() // TypeError: Cannot read property 'x' of undefined

上面代码只使用了对象的解构赋值默认值,没有使用函数参数的默认值。只有当函数foo的参数是一个对象时,变量xy才会通过解构赋值生成。如果函数foo调用时没提供参数,变量xy就不会生成,从而报错。因此定义函数时,当与解构赋值结合使用时,参数默认值可以不设置,但是这时候调用函数时就必须要传值,否则会报错,因此只有进行了结构赋值这一步才会去定义x和y

通过提供函数参数的默认值,就可以避免这种情况,如下:

function foo({x, y = 5}={}) {
  console.log(x, y);
}

上面这个函数的情况是:

1 如果调用foo时没传参数,则默认是{},将{}值对左边进行解构赋值,因为y有默认值,则结果为x:undefined,y:5

2 比如传了值为{x:10,y:20},那么就使用这个对象对左边进行解构赋值,匹配到了x和y,所以最终结果x=10,y=20;

 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值