1const value = { number: 10 }; 2 3const multiply = (x = { ...value }) => { 4 console.log(x.number *= 2); 5}; 6 7multiply(); 8multiply(); 9multiply(value); 10multiply(value);
本题为"单选题"
参考答案:
正确选项:C:20, 20, 20, 40
在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
。
最近更新时间:2021-07-03
题库维护不易,您的支持就是我们最大的动力!