选择篇(072)-下面代码的输出是什么?

2022-05-12 21:46:03 浏览数 (2)

代码语言:javascript复制
const value = { number: 10 };

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

multiply();
multiply();
multiply(value);
multiply(value);
  • A: 20, 40, 80, 160
  • B: 20, 40, 20, 40
  • C: 20, 20, 20, 40
  • D: NaN, NaN, 20, 40
答案: C

在ES6中,我们可以使用默认值初始化参数。如果没有给函数传参,或者传的参值为 "undefined" ,那么参数的值将是默认值。上述例子中,我们将 value 对象进行了解构并传到一个新对象中,因此 x 的默认值为 {number:10}

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

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

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

0 人点赞