每日一题(三八)const value = {number:10} const multiply = (x={...value})={ console.log(x.number = 2)

const value = {number:10};
const multiply = (x={...value})=>{
    console.log(x.number *= 2);
};
multiply();
multiply();
multiply(value);
multiply(value);

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

答案:

20 20 20 40

解析:

1.在 ES6 中,我们可以使用默认值初始化参数。如果没有给函数传参,或者传的参值为 undefined,那么参数的值为默认值。

2.本题中,我们将 value 对象进行了解构并传入了一个新对象中,因此 x 的默认值为 {number:10}

3.默认参数在调用时才会进行计算,每次调用函数时,都会创建一个新的对象。我们前两次调用 multiply 函数且不传值,那么每次 x 的默认值都是 {number:10},因此打印该数字的乘积值为 20

4.第三次调用 multiply 时,我们传递了一个参数,即对象 value ,*= 实际上是 x.number = x.number * 2 的简写,我们修改了 x.number 的值,并打印出值20

5.第四次,我们再次传入 value 对象,x.number 值之前被修改为20,所以 x.number *= 2 打印结果为 40

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值